2016-09-26 90 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'还包含'_' –