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

时间:2015-03-18 20:35:01

标签: regex regex-negation

这是正则表达式:

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

这是测试字符串:

a(b

即使(没有出现在黑名单中,也会返回NO匹配。这是没有意义的。谁知道为什么?

1 个答案:

答案 0 :(得分:1)

您必须将短划线放在角色类的末尾:

更改自:

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

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

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

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