java - 正则表达式:用空字符串替换所有无效字符

标签 java regex

我正在尝试创建一个正则表达式模式来替换所有无效字符。

小数点之前和小数点之后我可能有任何类型的数字,例如:0.0、1.0、150.0、129.000、200.999 等...

我有以下验证正则表达式模式,用于验证和匹配:

"\\d+(\\.\\d+)*"

但我想创建正则表达式模式,可以使用 string.replaceAll("regex", value); 来验证十进制数并替换所有无效字符或意外字符。 .

请检查下面我的测试值,以及替换所有无效字符后应返回的结果。

String[] values = {
    "0", // return 0 - valid
    "0.", // return 0. - valid
    "0.0", // return 0.0 - valid
    "0.0.", // return 0.0 - invalid, because we dont expect another decimal point
    "0.00", // return 0.00 - valid
    "0.00.", // return 0.00 - invalid, because we dont expect antoher decimal point
    "0.000", // return 0.000 - valid
    // etc.
    "10.000.", // return 10.000, this case should not be possible to enter because we dont want 2 decimal point so number like  10.000.00 should not be possible
    "0.0/", // return 0.0, invalid -- any kind of character will be replaced with empty
    "0.0@", // return 0.0, invalid -- any kind of character will be replaced with empty
};

最佳答案

您可以使用正则表达式 \D*(\d+\.?\d*)\D* 并将其替换为第一组 $1 (您的有效数字)。在 findValid() 方法中使用它:

public String findValid(String value) {
    return value.replaceAll("\\D*(\\d+\\.?\\d*)\\D*", "$1");
}

您现在可以使用它来查找值的有效数字。要检查输入值是否有效,您可以检查输入是否等于有效值:

Arrays.stream(values)
        .forEach(s -> {
            String valid = findValid(s);
            System.out.println(s + " => " + valid + " (" + (valid.equals(s) ? "valid" : "invalid") + ")");
        });

这将打印:

0 => 0 (valid)
0. => 0. (valid)
0.0 => 0.0 (valid)
0.0. => 0.0 (invalid)
0.00 => 0.00 (valid)
0.00. => 0.00 (invalid)
0.000 => 0.000 (valid)
10.000. => 10.000 (invalid)
0.0/ => 0.0 (invalid)
0.0@ => 0.0 (invalid)

关于java - 正则表达式:用空字符串替换所有无效字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55386492/

相关文章:

java - Java MapReduce-如何从Reducer类的不可写总和中输出前10个

java - 如何为从配置单元 jdbc 查询启动的 mr 作业指定额外的 jar?

java - 用于在 Java 中的 Google Apps 引擎中更新照片的 ByteString 值无效

java - 计划任务不适用于 websockets

java - JSF 查看范围 : How to Check if an object is in the view tree

即使期望为 true,javascript 正则表达式也会返回 false。没有 sj 错误

regex - 如何在 Julia 中编写包含加号的正则表达式?

javascript - 解决以下问题的正则表达式是什么?

python - 匹配除特定字符串之外的所有内容

regex - 正则表达式匹配A、B、AB