首页 > 解决方案 > 连字符后面的正则表达式下划线

问题描述

我有一个正则表达式可以从字符串中删除除字母数字字符之外的所有字符(并且我还允许一些特殊字符)。

我的正则表达式看起来像这样[^a-zA-Z0-9() _.,-]+它很好用(示例),但我不小心把它改成了这个[^a-zA-Z0-9() .,-_]+,它突然停止工作了。我在连字符后面的末尾移动了下划线。现在它不匹配(示例)。

它最后不能使用下划线的原因是什么?

标签: regex

解决方案


问题不是结尾的下划线,而是导致您出现问题的不是结尾-文字...

如果你用 逃避-你想成为文字的-(即:不是一个范围[a-z]\-,那么它工作正常。

试试看

[^a-zA-Z0-9() .,\-_]+

随着[,-_]您指定一个范围,就像[a-z]...它匹配 ASCII 之间的所有内容,_包括一些符号以及数字和大写字母。

见这里


推荐阅读