我有一个正则表达式可以从字符串中删除除字母数字字符之外的所有字符(并且我还允许一些特殊字符)。
我的正则表达式看起来像这样[^a-zA-Z0-9() _.,-]+
很好用(example),但是我不小心将其更改为了这个[^a-zA-Z0-9() .,-_]+
,它突然停止了工作。我将下划线放在最后的连字符后面。现在,它不匹配(example)。
到底为什么不能使用下划线?
答案 0 :(得分:2)
问题的根源不是下划线,结尾的不是文字-
会导致问题...
如果使用-
转义了要成为文字-
(即不是[a-z]
的范围)的\-
,那么它会正常工作。 / p>
[^a-zA-Z0-9() .,\-_]+
使用[,-_]
,您可以指定一个范围,就像[a-z]
...它匹配ASCII中,
和_
之间的所有内容,其中包括一些符号和数字和大写字母。