如何删除任何非字母数字字符?

时间:2015-02-23 16:17:17

标签: java regex

我想从字符串中删除任何非字母数字字符,但某些字符除外。

StringUtils.replacePattern(input, "\\p{Alnum}", "");

如何排除某些字符,例如.-;

4 个答案:

答案 0 :(得分:4)

使用not运算符^

[^a-zA-Z0-9.\-;]+

这意味着"匹配不是这些字符"。所以:

StringUtils.replacePattern(input, "[^a-zA-Z0-9.\\-;]+", "");

不要忘记正确转义需要转义的字符:你需要使用两个反斜杠\\,因为你的正则表达式是一个Java字符串。

答案 1 :(得分:1)

你可以否定你的表达;

\p{Alnum}

将其置于否定字符类中:

[^\p{Alnum}]

这将匹配任何非字母数字字符,然后您可以用""替换它们。如果你想允许其他字符,你可以将它们附加到字符类,例如:

[^\p{Alnum}\s]

与空格字符(\s)不匹配。

如果你要替换

[^\p{Alnum}.;-]

"",这些字符也将被允许:.;-

答案 2 :(得分:0)

你的意思是StringUtils.replacePattern(input, "[^a-z\.\-]+", ""); - 尽管我并不完全确定StringUtils是否使用特殊的RegEx语法。

答案 3 :(得分:0)

StringUtils使用Java的标准Pattern类。如果您不想导入Apache的库并希望它更快地运行(因为它不必在每次使用时编译正则表达式),您可以这样做:

{{1}}