2015-02-09 18 views
0

我正在研究创建不同的正则表达式,寻找强壮和中等强度的用户密码,并且我注意到相同的表达式给出了不同的结果(使用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,}$/gtrue

+2

发表您的正则表达式,并在此输入。 – 2015-02-09 14:37:35

+0

有关这里发生了什么的深入讨论,请参阅我对一个非常类似的问题的回答:[从JS变量构建正则表达式不起作用](http://stackoverflow.com/a/6803651/433790) – ridgerunner 2015-02-09 15:00:29

回答

2

在创建的正则表达式从RegExp构造函数实例中,您需要转义\与另一个\因为它是一个转义序列。

第一个作品的权利,因为在String没有\,而在其他国家,它的存在,转义

Escaped Version

+0

当然!我多么愚蠢! – 2015-02-09 14:51:59

+0

@ LukeTO'Brien发生:-) – 2015-02-09 14:52:29

相关问题