正则表达式:将所有无效字符替换为空字符串

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


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

};


jeck猫
浏览 304回答 1
1回答

蓝山帝景

您可以使用正则表达式并将其替换为第一个组(您的有效数字)。在方法中使用它:\D*(\d+\.?\d*)\D*$1findValid()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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java