匹配包含字母数字字符和&符号的正则表达式

19
我需要一个正则表达式来搜索包含字母数字、括号、破折号、句点、斜线和“&”符号的字符串。目前我正在客户端验证中使用以下正则表达式。
 [^A-Za-z0-9.)(/-\&]

编辑:

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


你需要澄清你想要什么。在你的问题中,你说你想匹配这些字符 ()-./&a-zA-Z0-9,并且可能是说你实际上想匹配任何不是这些字符的东西。你想匹配 ^ 吗?你想匹配 \ 吗? - Billy Moon
在 jQuery 验证中,我想要搜索我的字符串以查找除了 (,.-/&) 之外的字母数字和特殊字符,例如 "b&g (54.4kg/m)" 这样的字符串。如果有人输入除上述指定字符之外的任何特殊字符,则我的函数将返回 false。我的代码用于搜索字符串是 VAL.search(/[^A-Za-z0-9.)(/-&]+/g)==-1。 - key2
2个回答

22

在字符类末尾放置破折号,并转义反斜杠。

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

不确定为什么你包含了^,因为这会否定字符类。


应该转义正斜杠(/),而不是反斜杠。还需要转义点号(.)和括号。 - Billy Moon
1
@Billy:不是的。在正则表达式中,斜杠没有特殊含义,更不用说在字符类中了。 - Tomalak
包含^,因为我想搜索特殊字符的字符串 VAL.search(/[^A-Za-z0-9.)(/\&-]+/g)==-1 我在字符串末尾放了破折号,但它不起作用。请帮忙。 - key2
啊,我明白了。我并没有说你做错了,只是不确定你为什么这样做。 - Tomalak
@Billy 前斜杠有时需要转义,因为它被用作分隔符,这是主机语言的要求,而不是正则表达式的要求。同样适用于“&”符号(正则表达式方言可能会有所不同,但通常都不是元字符)。 - Tomalak
显示剩余4条评论

3

试试这个:

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

2
在字符类(character class)中,唯一需要转义的字符是 \] (以及如果你没有将它放在中间某个地方,则还有 ^)。 - Tomalak
1
@Tomalak 和 -,除非它是类中的最后一个字符。 - Billy Moon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接