正则表达式 'blacklist' 字符验证器返回奇数结果

Regex 'blacklist' character validator returning odd result

这是正则表达式:

^[^~^\/&$-+]*$

这是测试字符串:

a(b

即使 ( 没有出现在黑名单中,这个 returns 没有匹配。这是没有意义的。有人知道为什么吗?

你必须在字符 class:

的末尾加上破折号

更改自:

^[^~^\/&$-+]*$
         ^---- Here the dash works as a range instead of a single character

^[^~^\/&$+-]*$
          ^--- Here works as the single "-" character

顺便说一句,正如 Mr. Lama 在他的评论中指出的那样,您也可以像这样转义破折号:

^[^~^\/&$\-+]*$
         ^-- escaped here