我正在研究创建不同的正则表达式,寻找强壮和中等强度的用户密码,并且我注意到相同的表达式给出了不同的结果(使用lookaheads,backrefrence和negative lookahead)如果我使用RegExp
构造函数或文字语法。Javascript RegExp与构造函数和文字不同的结果
我已经在IE和Firefox的测试,并在这里创造一个小例子:http://jsfiddle.net/4z4gxxkL/
我用的是RegExp
构造是,我存储在JSON我表达式为字符串的原因 - 但在密码的情况下,我可以使用字面语法。
我所有的其他表情都很简单,并产生预期的结果。有人可以解释这里发生了什么吗?这是ECMAScript标准问题吗?
我总是倾向于使用http://regexr.com/来测试我的正则表达式
我通过这给了false
“ABC123”使用RegExp("^(?=.*\d)(?=.*[a-zA-Z])(?!.*(.)\1).{5,}$", "g")
预成型的测试发现这种差异,但是测试使用/^(?=.*\d)(?=.*[a-zA-Z])(?!.*(.)\1).{5,}$/g
给true
发表您的正则表达式,并在此输入。 – 2015-02-09 14:37:35
有关这里发生了什么的深入讨论,请参阅我对一个非常类似的问题的回答:[从JS变量构建正则表达式不起作用](http://stackoverflow.com/a/6803651/433790) – ridgerunner 2015-02-09 15:00:29