我正在研究创建不同的正则表达式,寻找强大和中等强度的用户密码,我注意到相同的表达式给出了不同的结果(使用前瞻,后退和负向前瞻),具体取决于我是否使用{{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
答案 0 :(得分:3)