2017-08-05 47 views
3

的Javascript正則表達式與某些特殊字符結束,但返回true

console.log(/^[0-9a-zA-Z]+[[email protected]#$%^&*_+-=]+$/.test("123456"));

,我認爲它應該返回false因爲字符串不以[email protected]#$%^&*_+-=字符, 結束,但它運行時,它會返回true。 它爲什麼會返回true

+1

你的問題是什麼? – brittenb

+1

爲什麼字符串「123456」匹配正則表達式「/^[0-9a-zA-Z] + [〜!@#$%^&* _ + - =] + $ /」?它在[〜!@#$%^&* _ + - =]中沒有一個或多個字符 – iinux

+0

[在正則表達式字符括號中包括連字符?](// stackoverflow.com/q/3697202) – Tushar

回答

5

問題是+-=是一個範圍。如果你看一下ASCII table,你可以看到,+-=包括+-./:;<=,和所有的數字0 .. 9

你想要[[email protected]#$%^&*_+\-=](轉義-)。

+0

你打我幾秒鐘:) – Toto

+0

你有任何參考,說明RegExp使用基於ASCII表順序的範圍? – Dez

+0

非常感謝,您快速解決我的問題。它很長時間很麻煩。 – iinux