我有一个正则表达式,用于搜索特殊字符。
当我搜索数字时,例如3,我总是得到0,当我期望得到-1时。
'3'.search(/[!\"£\$%\^&\*\(\)-_\+=\[\]\{\};:@\'#\\|<,\.>\/\?]/)
知道为什么会这样吗?
答案 0 :(得分:5)
\)-_
这会导致字符类包含)
和_
之间的所有字符,即)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
。 3
就是其中之一。
-
应放在开头或结尾,这样它就不会被视为特殊字符。此外,除了\
,[
,]
和/
之外,无需在字符类中转义任何内容。
/[-!"£$%^&*()_+=\[\]{};:@'#\\|<,.>\/?]/
(从技术上讲,[
也不需要进行转义,但为了保持一致性,我更愿意将其转义。另外,如果你逃避它,你可以匹配中间的-
{{1} }}。)