2016-09-19 145 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

相關問題