最近需要寫一個正則去匹配一個小數(小數非負,保留兩位),為方便和大家一塊兒學習研究,特意將我分析正則的過程寫下來。 第一,分析都會有哪些是合法的可以匹配的,以及非法的字元,先列舉下來。合法的有1、1.11、0.12、0.3、0、0.00,非法的可能會出現001、01.1、01.、-1、1.123等等 ...
最近需要寫一個正則去匹配一個小數(小數非負,保留兩位),為方便和大家一塊兒學習研究,特意將我分析正則的過程寫下來。
第一,分析都會有哪些是合法的可以匹配的,以及非法的字元,先列舉下來。合法的有1、1.11、0.12、0.3、0、0.00,非法的可能會出現001、01.1、01.、-1、1.123等等。
第二,根據上面特點數據大致分兩類,即小數或整數,我們對小數位和整數位分別考慮,在整數位如果不是0的話首位一定不是0,所以我們可以先寫出該部分的正則([1-9]\d*)匹配非0的情況,如果考慮到0 的話加或關係即可,同時需要加^限制,與是可以寫成^(([1-9]\d*)|0)。小數部分首先要匹配.,正則為\.,然後限制一到兩位小數\d{1-2},連起來為\.\d{1-2},同時該部分是可選的,所以需要括起來加?,修改為(\.\d{1-2})?$,最後合成為^(([1-9]\d*)|0)(\.\d{1-2})?$
第三,在工具中測試該正則,將第一步列出的數據測一下,看是否符合預期