Запрос по регулярному выражению с использованием Javascript

1

Я работаю над regexp, где, если пользователь вводит последовательные пробелы, тире, апострофы, тогда мне нужно показать одно сообщение об ошибке

^[a-zA-Z0-9!@#\$%\^\&*\)\(+=._-]{0,}$

С приведенным выше reg exp я получаю, если пользователь вводит одну дефис, я получаю ошибку, но здесь я хочу, чтобы пробелы были апострофами.

Я боюсь здесь, любезно помогите мне

заранее спасибо

  • 1
    Хотите что-нибудь вроде ^(?!.*( {2}|--|''))[a-zA-Z0-9!@#\$%\^\&*\)\(+=._ '-]*$ ?
  • 0
    спасибо за ответ, я хочу только для последовательных пробелов, ----- 'не для письма
Показать ещё 1 комментарий
Теги:

1 ответ

1
Лучший ответ

Если я правильно понял, в основном вам нужно сделать Back-referencing, чтобы проверить двойные слова (или больше, чем удваивать)

/(\s-,)\1+/.test(...)

const hasDoubles = new RegExp(/(\s|-|,)\1+/);

console.log( hasDoubles.test("hello - ") ) // false
console.log( hasDoubles.test("--") ) // true
console.log( hasDoubles.test("  ") ) // true
console.log( hasDoubles.test(",,") ) // true

Этот код захватывает любое пространство \s или тире - или , а затем проверяет, если это происходит снова 1 или более раз, обозначаемые \1+ \1 для резервного ссылки на группу захвата, и + 1 или более появлений.

  • 0
    спасибо за быстрый ответ, но когда я пытаюсь в regex онлайн, я не получаю результат, скажем, например, если я набираю последовательные ----- или пробелы или "" "" "" "
  • 0
    Вы можете отправить мне ссылку? потому что я попробовал онлайн решение и все последовательные случаи совпадают (или консоль). ------- соответствует ли это всем, например.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню