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

1 javascript regex special-characters

我有一个正则表达式来搜索特殊字符.

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

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

知道为什么会这样吗?

ken*_*ytm 5

\)-_
Run Code Online (Sandbox Code Playgroud)

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

-应放置在开始或结束,这样才不会被算作一个特殊字符.此外,除了\,[,]/,没有必要为了逃避字符类东西.

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

(从技术上讲,[它也不需要被转义,但为了保持一致性,我宁愿逃避它.另外,-如果你逃脱它,你可以在中间匹配\-.)