gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:05:06 24 4
gpt4 key购买 nike

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

小数点之前和小数点之后我可能有任何类型的数字,例如: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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com