2016-09-26 2 views
2

Мне нужно регулярное выражение для проверки строки ниже правил.Проверка строки с использованием RegEx

  1. Строка не должна содержать повторяющихся символов более 2 раз.
  2. Строка не должна позволять специальные символы, такие как &, <,%

До сих пор мне удалось создать регулярное выражение

/(?!(.)\1{2,})^([a-zA-Z0-9''\.\-\,]+\s?)*$/i 

который проверяет правила с 1 & 2. Но единственная проблема, что у меня есть, он только проверяет правило в начале строки.

+0

Любая обратная связь по двум полученным ответам? –

ответ

2

Для вашего негативного взгляда на работу вы должны сделать так, чтобы он мог соответствовать 3-в-строке в любом месте в проверенной строке; просто добавьте .* в его начале:

/(?!.*(.)\1{2,})^([a-zA-Z0-9'".\-,]+\s?)*$/i 

Я также изменил свои два последовательных одинарные кавычки в классе символов в одинарной кавычки и двойные кавычки я предполагаю, что вы хотите, чтобы и удалить ненужные слэш побеги.

2

Измените регулярное выражение

/(?!.*(.)\1{2,})^([a-zA-Z0-9'".,-]+\s?)*$/i 
    ^^ 

Это позволит отрицательный предпросмотр работать на весь регулярное выражение, а не в начале.

demo

+0

Почему не '[a-zA-Z0-9]' '[\ w]'? –

+0

@HappyCoding, потому что '\ w' также включает' _' –

Смежные вопросы