使用正则表达式替换所有不是数字,逗号或点的字符

Jan*_*lep 0 java regex replace

这就是我在做的事情:

public static String replaceCharAt(String s, int pos, char c) {
    return s.substring(0, pos) + c + s.substring(pos + 1);
  }

for(int i=0;i<str.length();i++)
{
    if(str.charAt(i)!=',' || str.charAt(i)!='.' || !Character.isDigit(str.charAt(i)))
         replaceCharAt(str,i,'x');
}
Run Code Online (Sandbox Code Playgroud)

但我被告知正则表达式更有效.不幸的是我不知道如何使用正则表达式,我只是第一次学习.

这是我用来替换所有非数字字符的正则表达式

str.replaceAll("\\D", "")
Run Code Online (Sandbox Code Playgroud)

但是如何才能删除点和逗号呢?

The*_*ird 5

您可以使用否定字符类 [^\d.,]+来匹配数字,点或逗号一次或多次.

在Java中:

String regex = "[^\\d.,]+";
Run Code Online (Sandbox Code Playgroud)

演示