问题 正则表达式匹配字母数字字符和&符号(&)


我需要正则表达式来搜索字符串 alphanumeric, (, ), -, ., / and ampersand(&).

现在我在客户端验证中使用此正则表达式

 [^A-Za-z0-9.)(/-\&]

编辑:

我想在我的字符串中搜索特殊字符 VAL.search(/[^A-Za-z0-9.)(/-\&]+/g)==-1


9217
2018-06-07 08:56


起源

你需要澄清你想要的东西。在你的问题中,你说你想要匹配这些字符 ()-./&a-zA-Z0-9 并且可能在说你真的想要匹配任何不是这些角色的东西。你想要匹配吗? ^?你想要匹配``? - Billy Moon
在jquery验证中,我想在我的字符串中搜索除(,.- /&)之外的字母数字和特殊字符,例如字符串如“b&g(54.4kg / m)”。如果有人输入除上面指定之外的任何特殊字符,那么我的函数将返回false。我搜索字符串的代码是VAL.search(/ [^ A-Za-z0-9。)(/ - \&] + / g)== - 1 - key2


答案:


转义反斜杠,将短划线放在角色类的末尾。

[^A-Za-z0-9.)(/\\&-]

不确定你为什么包括在内 ^,因为这否定了角色类。


12
2018-06-07 08:59



应该逃避正斜线,而不是反斜杠。还需要转义点和括号 - Billy Moon
@Billy:不会。正斜杠在正则表达式中没有特殊含义,甚至在字符类中没有特殊含义。 - Tomalak
包括^因为我想在我的字符串中搜索特殊字符VAL.search(/ [^ A-Za-z0-9。)(/ \\& - ] + / g)== - 1我把短划线放在最后我的字符串,但它没有工作。请帮忙 - key2
啊,我明白了。我没有说这是错的,我只是不确定你为什么这么做。 - Tomalak
@Tomalak正斜杠通常会分隔正则表达式的开头和结尾,因此在这种情况下需要进行转义。在这个正则表达式中,我不认为反斜杠需要转义,因为问题中不需要反斜杠。我认为反斜杠旨在逃避&符号,而不是匹配的角色。 - Billy Moon


尝试这个:

VAL.search(/[^a-zA-Z0-9.()/&-]/g) == -1

2
2018-06-07 09:00



需要在字符类中转义的唯一字符是 \ , ] (和 ^ 除非你把它放在某个地方的中间)。 - Tomalak
@Tomalak和 - 除非它是班上的最后一个角色。 - Billy Moon