javascript正则表达式中的冒号
我有一个正则表达式:javascript正则表达式中的冒号,javascript,regex,Javascript,Regex,我有一个正则表达式: /^([a-zA-Z0-9_ -.''""]+)$/ 它可以很好地支持字母表、数字和一些特殊字符,如-、、“和” 不,我希望它也允许冒号(:)。我尝试了以下正则表达式,但失败了-它开始允许许多其他特殊字符 /^([a-zA-Z0-9_ :-.''""]+)$/ 你知道为什么吗?-在字符类中有特殊的含义,就像在a-z中一样。试试这个: /^([a-zA-Z0-9_ :\-.'"]+)$/ -.(空格到点)允许使用一些额外字符,如#、$等。如果这是有意的,请尝试: /^(
/^([a-zA-Z0-9_ -.''""]+)$/
它可以很好地支持字母表、数字和一些特殊字符,如-
、
、“
和”
不,我希望它也允许冒号(:
)。我尝试了以下正则表达式,但失败了-它开始允许许多其他特殊字符
/^([a-zA-Z0-9_ :-.''""]+)$/
你知道为什么吗?
-
在字符类中有特殊的含义,就像在a-z
中一样。试试这个:
/^([a-zA-Z0-9_ :\-.'"]+)$/
-.
(空格到点)允许使用一些额外字符,如#
、$
等。如果这是有意的,请尝试:
/^([a-zA-Z0-9_ -.'":]+)$/
另外,要知道,您不必多次包含任何字符,这是毫无意义的。“
和”
各出现两次,可以安全地删除它们
顺便说一句,在中的点后出现冒号,表示正则表达式无效。它不应该允许额外的字符,你应该会得到一个错误。在Firefox中,您会得到:
字符类中的无效范围
表达式的开头可能是错误的。您有/^([a-zA-Z0-9_-。”“]+)$/
,其中您可能的意思是/^([a-zA-Z0-9_-。”“]+)$/
(请注意仪表板前面的反斜杠)。[]
中的-
表示一个范围,因此-.
(空格虚线点)表示“从一个空格到一个点”,如果将冒号放在其中,它只会更改该范围
因此,添加冒号并转义破折号(并删除末尾附近多余的'
和“
”),您可能需要:/^([a-zA-Z0-9\-。”:]+)$/
您可以使用:
/^([a-zA-Z0-9_ :.'"-]+)$/
我已经将-
移到了character类的末尾,这样它就被逐字处理,而不是作为范围操作符。同样的问题也存在于原始正则表达式中,-
被视为范围运算符
此外,我还从char类中删除了冗余的
“
和”
。更可读的替代方法可能是将-
移动到character类的开头或结尾(这也会使它失去其特殊意义)@cebewee-好吧,那要看情况了。不管怎样,我还是喜欢逃避它,以确保它的意思清楚,并防止出错。另一个开发人员可能会将[a-z-]
更改为[a-z-~]
,然后我们遇到了一个问题。谢谢你们。这起作用了:)…我没有注意到“-.”。再次感谢。