以下是我的正则表达式。
/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/
它正在正常工作,即使逗号不包含在双引号中,它也会返回true。 为什么它显示逗号的奇怪行为。
例如a:b没有引号返回false而a,b没有引号返回true。
专家可以请你帮忙
答案 0 :(得分:3)
因为你在这里创建一个角色范围:
/^\\"[a-zA-Z0-9!#\$%&\\'\*\+-\/=\?\^_`{\|}~;,:<>()@\[\]]*\\"$/
^^^^^
这意味着从+
到/
的所有字符,其中还包括,
。
在一个字符类中,你不需要转义正常的正则表达式特殊字符,但还有另外一个,它具有-
的特殊含义。
所以正确的字符类是
/^\\"[a-zA-Z0-9!#$%&\\'*+\-\/=?^_`{\|}~;,:<>()@\[\]]*\\"$/
另一种方法是将-
放在字符类的开头或结尾处,在这种情况下,它不会创建范围而不需要转义。