Javascript RegExp来自构造函数和文字的不同结果

时间:2015-02-09 14:35:26

标签: javascript regex

我正在研究创建不同的正则表达式,寻找强大和中等强度的用户密码,我注意到相同的表达式给出了不同的结果(使用前瞻,后退和负向前瞻),具体取决于我是否使用{{1构造函数或文字语法。

我已经在IE和Firefox上测试过并在这里创建了一个小例子:http://jsfiddle.net/4z4gxxkL/

我使用RegExp构造函数的原因是我将表达式存储在JSON中作为字符串 - 但在密码的情况下,我可以使用文字语法。

我所有的其他表达都很简单,并产生预期的结果。有人能解释一下这里发生了什么吗?这是ECMAScript标准问题吗?

我总是倾向于使用http://regexr.com/来测试我的正则表达式

我通过在" abc123"上执行测试发现了这种差异。使用提供RegExp的{​​{1}},然而使用RegExp("^(?=.*\d)(?=.*[a-zA-Z])(?!.*(.)\1).{5,}$", "g")进行的测试给了false

1 个答案:

答案 0 :(得分:3)

RegExp构造函数创建正则表达式实例时,您需要使用另一个\转义\,因为它是转义序列。

第一个正常,因为\中没有String,而在其他情况下,它就在那里,未转义

Escaped Version