正则表达式删除除字符和数字之外的所有内容

时间:2011-06-04 20:00:19

标签: java regex

我想删除除字符串中的字符a-z,A-Z和0-9之外的所有内容,因此我需要为Java的string.replaceAll(regex, "");

创建正则表达式

旧字符串看起来像这样:

MAX EUK_1334-PP/B+

新字符串应如下所示:

MAXEUK1334PPB

5 个答案:

答案 0 :(得分:67)

可能有一个更简洁的正则表达式,但这肯定会有效:

string.replaceAll("[^a-zA-Z0-9]", "");

答案 1 :(得分:17)

string.replaceAll("[^a-zA-Z0-9]+", "");

答案 2 :(得分:2)

String test = "MAX EUK_1334-PP/B+";     
test = test.replaceAll("[\\W_]", "");
System.out.println(test + "\n");

印刷结果:

MAXEUK1334PPB

答案 3 :(得分:1)

有些人忘记了“_”字符:

String regex = "[_\\W]";

public class RegexFun2 {
   public static void main(String[] args) {
      String test = "MAX EUK_1334-PP/B+";

      String regex = "[_\\W]";

      String result = test.replaceAll(regex, "");
      System.out.println(result);
   }
}

但我仍然认为OP是在欺骗自己,并没有证明他先尝试并在原来的问题上发表了他的尝试。我的2美分。

答案 4 :(得分:0)

您可以使用字符的ASCII值:

while(!end of string){
    if(valueOfChar is between 48-57 or 65-90 or 97-122)
          write it to your string
}

这可能会有所帮助,但我不知道您是否应该使用replaceAll编写代码。 replaceAll和此代码都具有相同的效果(O(n))。