我试过用这个,但没有用

return value.replaceAll("/[^A-Za-z0-9 ]/", "");

当前回答

return value.replaceAll("[^A-Za-z0-9 ]", "");

这将使空间完好无损。我猜这就是你想要的。否则,从正则表达式中删除空格。

其他回答

你也可以试试这个更简单的正则表达式:

 str = str.replaceAll("\\P{Alnum}", "");

Java的正则表达式不需要在正则表达式周围加上正斜杠(/)或任何其他分隔符,这与Perl等其他语言不同。

Try

return value.replaceAll("[^A-Za-z0-9]", "");

or

return value.replaceAll("[\\W]|_", "");

Guava的CharMatcher提供了一个简洁的解决方案:

output = CharMatcher.javaLetterOrDigit().retainFrom(input);
return value.replaceAll("[^A-Za-z0-9 ]", "");

这将使空间完好无损。我猜这就是你想要的。否则,从正则表达式中删除空格。