我正在研究創建不同的正則表達式,尋找強壯和中等強度的用戶密碼,並且我注意到相同的表達式給出了不同的結果(使用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