正则表达式返回true,即使逗号没有用双引号括起来

时间:2013-07-24 10:23:03

标签: javascript regex

以下是我的正则表达式。

/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/

它正在正常工作,即使逗号不包含在双引号中,它也会返回true。        为什么它显示逗号的奇怪行为。

例如a:b没有引号返回false而a,b没有引号返回true。

专家可以请你帮忙

1 个答案:

答案 0 :(得分:3)

因为你在这里创建一个角色范围:

/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/
                          ^^^^^

这意味着从+/的所有字符,其中还包括,

在一个字符类中,你不需要转义正常的正则表达式特殊字符,但还有另外一个,它具有-的特殊含义。

所以正确的字符类是

/^\\"[a-zA-Z0-9!#$%&\\'*+\-\/=?^_`{\|}~;,:<>()@\[\]]*\\"$/

另一种方法是将-放在字符类的开头或结尾处,在这种情况下,它不会创建范围而不需要转义。