Javascript Regex用于自定义验证

时间:2017-01-12 10:27:26

标签: javascript regex

我需要正则表达式

1)[A-Z][a-z][0-9]必须包括大写&小写字母,数字和&特殊字符(+和 - 除外)。

2)序列中不超过2个相同的字符(例如,AAxx1224!@Password@123Google#12是不可接受的。)

我试过这个,但不知道如何检查2个相同的字符。

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^%*()!&=]).*$

1 个答案:

答案 0 :(得分:1)

您可以添加额外的(?!.*(.)\1)前瞻检查以禁止连续字符,并将最后的.*替换为[^_+]*(或[^-+]*,如果您的意思是连字符)以匹配任何字符字符_(或-)和+

^(?!.*(.)\1)(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^*()!&=])[^_+]*$
  ^^^^^^^^^^                                                    ^^^^^

(?!.*(.)\1)前瞻匹配除了换行符之外的任何0+字符,然后逐个捕获这些字符并尝试在它们之后立即匹配相同的字符(使用\1反向引用)。如果找到模式,则整个匹配失败。

请注意,[^_+]也可能与换行符匹配,但我想这不是问题所在。无论如何,你可以在那里添加\n\r以避免匹配它们。

请参阅regex demo