正则表达式:替换特定字符和空格除外

时间:2013-09-22 15:12:17

标签: java regex

我在Java编码,我有一个字符串,我想保留字母,数字,“:”,“ - ”和空格,并删除其他所有内容。所以,我使用了这段代码:

str=str.replaceAll("[^\\dA-Za-z#:-\\s*]", "");

它不起作用。

直到

才能正常工作
str=str.replaceAll("[^\\dA-Za-z#:-]", "");

其他所有内容,除了字母,数字和字符“:”和“ - ”都被删除

但是当我试图为空白字符添加条件时,我遇到了问题。

感谢您的帮助。

提前谢谢。

2 个答案:

答案 0 :(得分:1)

短划线必须是字符类中的第一个或最后一个字符,否则它将被解释为范围指示符(如[A-Z]中所示);在你的情况下,[:-\\s]是一个毫无意义的范围。使用

str = str.replaceAll("[^\\dA-Za-z#:\\s-]+", "");

(或者您是否也想在文字中留下星号)?

答案 1 :(得分:1)

-在字符类中使用时描述范围..

在您的情况下,您实际上是在尝试匹配范围:\s的字符,这是无效范围。


-移至开头

[^-\\dA-Za-z#:\\s]

或结束

[^\\dA-Za-z#:\\s-]