[英]JS, RegExp, weird behavior
我使用簡單的正則表達式模式來驗證電子郵件地址,我發現這種模式:
^[^@]+@[^@]+\.[^@]+$
當我檢查regex101上的模式時,它的行為符合預期(意味着它不匹配例如email@abcde
)。
所以以下行:
/^[^@]+@[^@]+\.[^@]+$/.test('email@abcde'); // false
但:
let patt = new RegExp('^[^@]+@[^@]+\.[^@]+$');
patt.test('email@abcde'); // true
什么?! ,我測試了chrome和firefox,同樣的行為,任何人都可以解釋一下嗎?
問題在於\\.
被評估為.
在你的正則表達式。 換句話說,你的正則表達式是有效的: ^[^@]+@[^@]+.[^@]+$
要修復,請使用//
正則表達式分隔符:
patt = /^[^@]+@[^@]+\.[^@]+$/
patt.test("email@abcde") // false
patt.test("email@abcde.com") // true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.