2016-09-26 65 views
2

我需要一個正則表達式來驗證以下規則的字符串。使用RegEx驗證字符串

  1. 字符串不能包含任何重複的字符超過2次。
  2. 字符串不應該允許特殊字符,如&,<,%

到目前爲止,我成功地創建正則表達式

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

這驗證規則1個& 2.但唯一的問題是什麼我已經是它只驗證字符串開始處的規則。

+0

對您收到的兩個答案的任何反饋? –

回答

2

對於負面的工作,你必須做到這一點,以便它可以匹配驗證字符串中任意位置的三合一行;只是在其開始添加.*

/(?!.*(.)\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'還包含'_' –