为什么这个reg exp总是成功的数字?

时间:2010-08-03 10:06:16

标签: javascript regex special-characters

我有一个正则表达式,用于搜索特殊字符。

当我搜索数字时,例如3,我总是得到0,当我期望得到-1时。

'3'.search(/[!\"£\$%\^&\*\(\)-_\+=\[\]\{\};:@\'#\\|<,\.>\/\?]/)

知道为什么会这样吗?

1 个答案:

答案 0 :(得分:5)

\)-_

这会导致字符类包含)_之间的所有字符,即)*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_3就是其中之一。

-应放在开头或结尾,这样它就不会被视为特殊字符。此外,除了\[]/之外,无需在字符类中转义任何内容。

/[-!"£$%^&*()_+=\[\]{};:@'#\\|<,.>\/?]/

(从技术上讲,[也不需要进行转义,但为了保持一致性,我更愿意将其转义。另外,如果你逃避它,你可以匹配中间的- {{1} }}。)