2016-09-19 2 views
1

^[a-zA-Z'.\s]{2,40}$" - это оригинальное регулярное выражение, используемое для поля firstname в моем проекте. Я хочу изменить этот regex так, чтобы он не позволял «тестировать» как вход.Regex, чтобы разрешить только строку, но не слово «тест»

"^(?!^test$)(^.*$)");" прекрасно работает, чтобы исключить слово «тест», но он позволяет пробелы & номеров. так что будет регулярное выражение, которое будет допускать только строку в качестве входа, но не позволит использовать слово «тест», то есть имя не может быть «тестом»?

+0

Ваше начальное регулярное выражение также допускает пробелы. Если вы хотите избежать совпадения 'test' и whitespace, используйте'^(?! test $) [a-zA-Z '.] {2,40} $ ' –

+0

эй спасибо. пробелы в порядке, просто хочу, чтобы номера и имя не могли быть «тестом». firstname может быть tesdtkkkkd, но не может быть 'test' – rohit

+0

Затем просто добавьте lookahead к текущему регулярному выражению - '^ (?! test $) [a-zA-Z '. \ s] {2,40} $'. Это регулярное выражение не может соответствовать цифрам. –

ответ

2

Вы можете использовать

^(?!test$)[a-zA-Z'.\s]{2,40}$ 

См regex demo.

Детали:

  • ^ - начало строки
  • (?!test$) - строка не может равняться test
  • [a-zA-Z'.\s]{2,40} - от 2 до 40 символов, которые ASCII буквы, ', . или пробельные
  • $ - конец строки
+0

Привет, как я могу исключить все комбинации «теста»? означает Test, test, TEst, tEst и т. д. и т. д. Также я не хочу разрешать какой-либо специальный символ – rohit

+0

Если регулярное выражение выполняется на стороне сервера, используйте '(? i)^(?! test $) [a-zA-Z ' . \ s] {2,40} $ '. Кроме того, вы можете использовать его только с отрицательными классами символов, такими как '^ (?! [Tt] [eE] [sS] [tT] $) [a-zA-Z '. \ S] {2,40} $' , –

+0

Спасибо другу, что он работает – rohit

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