java只替换正则表达式a-z0-9

时间:2010-10-11 17:29:31

标签: java regex

我想在字符串中仅显示a-z0-9,其他字符应替换为空字符串

String s=this.saveFileName.replaceAll("/[a-z0-9. ]/", "");

这些不起作用,任何想法为什么?

4 个答案:

答案 0 :(得分:14)

试试这个:

String s = "abc123ABC!@#$%^;'xyz";
String newString = s.replaceAll("[^a-z0-9]", "");
//newString is now "abc123xyz"

这利用了字符类中的否定(^)运算符,它基本上表示“匹配除以下字符之外的所有内容。”

此外,在定义Java正则表达式时不需要斜杠。

答案 1 :(得分:2)

您不需要这些/ /

像PHP这样的语言希望你将正则表达式放在一对分隔符之间,而Java则不然。

由于您要替换a-z0-9以外的所有内容,因此您需要正则表达式[^a-z0-9][^a-z\\d]

[..]是一个char类,用于匹配其中列出的char。 char类还可以包含匹配一个小写字母的[a-z]等范围。现在char类开头的^否定了它,因此[^a-z]匹配任何一个字符 而不是 一个小写字母。

答案 2 :(得分:1)

您是否在没有//标记的情况下尝试过它?

String s=this.saveFileName.replaceAll("[^a-z0-9]", "");

答案 3 :(得分:0)

这个正则表达式似乎可以解决问题:

String s="Testing-1.2.3_$".replaceAll("[^a-z0-9. ]", "");

输出:

esting1.2.3

^符号否定了集合,不需要斜杠。