亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

正則表達式:將所有無效字符替換為空字符串

正則表達式:將所有無效字符替換為空字符串

jeck貓 2022-09-07 21:44:38
我正在嘗試創建一個正則表達式模式來替換所有無效字符。在小數點之前和小數點之后,我可以有任何類型的數字,例如: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};
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

您可以使用正則表達式并將其替換為第一個組(您的有效數字)。在方法中使用它:\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)


查看完整回答
反對 回復 2022-09-07
  • 1 回答
  • 0 關注
  • 283 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號