2016-09-19 139 views
1

^[a-zA-Z'.\s]{2,40}$"是我的项目中用于名字字段的原始正则表达式。我想修改这个regex,这样它就不会允许'test'作为输入。正则表达式只允许字符串,但不允许单词“测试”

"^(?!^test$)(^.*$)");"可以很好地排除单词'test',但它允许空格&数字。那么什么是正则表达式,它只允许字符串作为输入,但不会允许单词“测试”,即名字可能不是'测试'?

+0

您的初始正则表达式还允许空格。如果你想避免匹配'test'和空格,使用'^(?! test $)[a-zA-Z'。] {2,40} $' –

+0

嘿谢谢。空格是好的,只是想避免数字&firstname不能'测试'。 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等等,我也不想让任何特殊字符 – rohit

+0

如果在服务器端执行正则表达式,使用'(?i)^(?! test $)[a-zA-Z' \ S] {2,40} $'。否则,你只能用否定的字符类拼写出来,比如'^(?![Tt] [eE] [sS] [tT] $)[a-zA-Z'.s] {2,40} $' 。 –

+0

感谢朋友的工作 – rohit

相关问题