正则表达式先行问题需要支持下列格式用贪婪的量词
3位数字可选空间后跟以下字符集ACERV内指定了三个非重复的字符(空格只在两个字符之间是有效的)
有效格式:
123
123 A
123 A v
123 CER
无效格式:
123A
123 AA
123 A - when followed by a space
我到目前为止 - 我可能是在与不一定需要向前看符号复杂的:
^([0-9]{3}) # - first 3 digits
(\s(?=[ACERV]))([ACERV]) # - allow space only when followed by ACERV
(?!\3)(?=[ACERV ]{0,1})([ACERV ]{0,1}) # - do not allow 1st char to repeat
(?!\3) # - do not allow 1st char to repeat
(?!\4) # - do not allow 2nd to repeat
(?!\s) # - do not allow trailing space
(?=[ACERV]{0,1})([ACERV]{0,1})|[0-9]{3}$
当先行加入它不匹配的有效格式123(\ 4?!) A - 将(?!\ 4)上的量词修改为(?!\ 4)*或(?!\ 4)?允许123 A匹配,但允许重复第一个或第二个字符。
为什么123A无效? – nu11p01n73R 2014-11-04 21:13:10
不重复相邻或任何地方? – sln 2014-11-04 21:17:27
非重复仅在文本字段的格式(即,仅123 AEV的一个单一的入口将被允许) – 2014-11-04 22:26:22