catspeake
2021-05-03 21:16:24
我正在嘗試編寫一個正則表達式來驗證十進制數字。該數字必須包含小數點。小數點右邊必須有一個數字[0-9]。小數點左邊最多可以有5位數字,但除非以0開頭,否則它們不能以0開頭。允許的:0.1(如果后跟小數位,則第一位數只能為零)10345.0(小數點左邊最多5位,小數點右邊必須有1位)不允許:0(無小數位)10(無小數位)(小數點右邊沒有數字)。(小數點兩側沒有數字).1(小數點左邊沒有數字)此正則表達式驗證小數點前的內容^(?:[1-9][0-9]{0,4}|0)$此正則表達式驗證小數點后的內容^[0-9]{1}+$我只是不知道如何將兩者結合起來,使得小數位是強制性的。我該如何解決這個問題?
3 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
據我所知,這行得通
^(?:[1-9]\d{0,4}|0)\.\d$
展開式
^ # BOS
(?:
[1-9] \d{0,4} # 1-5 digits, must not start with 0
| # or,
0 # 0
)
\. \d # decimal point and 1 digit
$ # EOS

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
那應該工作
const r = /^(?:[1-9]\d{0,4}|0)\.\d+/
const arr = ['0', '1', '1.2', '1.', '1.123', '0123.1', '123.123', '1234.1', '12345.12345678', '123456.123', '0.12'];
arr.forEach((val) => {
console.log(val, r.test(val));
})
添加回答
舉報
0/150
提交
取消