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-~]
,然后我们遇到了一个问题。谢谢你们。这起作用了:)…我没有注意到“-.”。再次感谢。