2017-08-05 85 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