我一直在嘗試但沒有成功 我需要一個正則運算式來驗證可能包含點和逗號的數字。 數字應該是正數,而且逗號后最多有兩個數字
。有效的情況是:
1000 - valid
1,000 - valid
1,000.22 - valid
-2 not valid[/span]。
1,000.233 not valid
0 not valid[/span]。
1.00,22 - not valid
語言是javascript
uj5u.com熱心網友回復:
。let valid =["1000"/span>,"1,000"/span>,"1,000. 22"]。
let notValid = ["-2","1,000.233","0","1.00,22"] 。
let rge = /^[1-9] d*(,d{3})*(.d{1,2})?$/;
for(let x of valid)
console.log(x," è valida? ",rge.test(x))。)
for(let x of notValid)
console.log(x," è valida? ",rge.test(x))。)
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
上面有一個可能的解決方案,在Javascript中,你還沒有指定語言。
d是在[0-9]范圍內的數字
。
句號.是一個元字符(它意味著任何字符),要參考字符.,你必須用.轉義。
表示至少有1次或更多的次數
*表示0次或更多次?
? 表示0或1次
{1,2}表示最少匹配1次,最多2次
開始的^和最后的$指的是完全匹配,否則你可能會有一個部分匹配的字串
uj5u.com熱心網友回復:幾個假設:
- 無效:'123456789.12'和'12345,123.12'
我認為下面的方法可以滿足你的要求:
^[1-9]/span>(? :d*|d{0,2}(?:,d{3})*(?:.dd?) ?
查看在線演示
^- 起始行錨。[1-9]- 1-9范圍內的一個數字。(?:- 打開一個非捕獲組。d*- 0 數字,允許任何整數。|- 或者:d{0,2}- 0至2位數之間;(?:,d{3})*- 后面是一個非捕獲組,允許任何0 次的逗號,后面是3位數字。(?:.dd?)?- 后面是一個可選的非捕獲組,允許最多兩位小數。)$- 關閉非捕獲組,并與端線錨匹配。
或者,如果你還想允許任何整數后面有小數(例如:'123456789.01'),你可以把這個改為:
^[1-9]/span>(? :d*|d{0,2}(?:,d{3})*)(?:.dd?) ?
uj5u.com熱心網友回復:
我認為這個詞組應該可以解決這個問題:
[1-9][d,]*(.d{1, 2}) ?
[1-9] - 匹配1和9之間的一個字符開始(要求不匹配0)
[d,]* - 匹配0個或更多的數字或逗號
(.d{1,2})? - 零個或一組點和一個或兩個數字
對于測驗詞組,我確實推薦https://regex101.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311808.html
標籤:
上一篇:在Python3中向Tkinter回呼驗證函式傳遞args,這可能嗎?
下一篇:Tcl中的%P是什么?
