大於0且能包含小數的正規表示式,遮蔽00和0 0等

2021-09-12 13:54:31 字數 1070 閱讀 5252

開發過程中遇到涉及金額的數字,金額要求是大於0的數,可以包括小數。所以也就能包含0.5,0.50,0.01,1.01等等這樣的數字。

要寫乙個正則判斷使用者輸入的金額是否合法,在網上找了很多正則,都沒辦法滿足,網上大多數正則沒辦法過濾掉像:0、00、001、0.0、01.1、01.0等,有的還會遮蔽0.50這些類似數字,大家可以先自測一下。

所以最後撿起來幾乎快忘掉的正則,自己寫了乙個:

/^([1-9]\d*(\.\d*[1-9][0-9])?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/

或者:/^([1-9]\d*(\.\d*)?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/

自測是能夠正常的輸入大於0(包括像0.10,0.01,且遮蔽像00,0.0,001,01.0,01.1等)的數。

最後補上解析:

/^([1-9]\d*(\.\d*[1-9][0-9])?)|(0\.\d*[1-9][0-9])|(0\.\d*[1-9])$/

解析: /^

//匹配開頭[1

-9]//表示第乙個數為1~9中的任意乙個(不能為0開頭,0開頭的在後半部分):匹配1~9

\d*//表示0-9的任意乙個數字,可以為多位數 :匹配除開頭數字外的整數部分

(\.\d*)?

//表示跟小數點,以及任意數字:匹配小數點,以及小數點後面可以為任意數

|//表示選擇,即「或」,第二種可能

0\.\d*[1

-9][

0-9]

//表示以0開頭,後面接小數點,小數點後面第一位數在1~9之間,第二位數可以在0~9之間

|//表示選擇,即「或」,第三種可能

0\.\d*[1

-9]表示以0開頭,後面接小數點,小數點後面只有一位不為0的數

$ //匹配結尾

/

一邊測試一邊解析,發現單靠上面好像不能過濾掉漢字或者標點符號那些,我是專案裡面還有封裝的校驗,如果是input框,type設定為number應該就可以了,還是需要多測試。

正規表示式 大於等於0

system.out.println 大於0的正整數 0.001 matches 1 9 d 0 9 1 9 0 0 9 1 9 0 正規表示式 最簡單易懂的正規表示式 只需要三步 第一步 第二步 第三步 d w 不明白什麼意思的看最下邊的註解 學會三步以後 那麼你就掌握了 正規表示式的 號碼的正規...

js數字正規表示式,js小數正規表示式

js數字正規表示式,js小數正規表示式 是否為數字 僅正數 包括正整數 正小數 0 param value returns function isnumber value 是否為所有數字 正數 負數 包括整數 小數 0 param value returns function isnumberall...

js正則大於0小於100 正規表示式詳解(基礎篇)

前言 對正規表示式一直都很嚮往覺得他很神奇,尤其是在處理前端頁面表單的時候,實在不想寫if else判斷,所以抽了點時間簡單學習了一下,總結下學習成果。我在處理表單驗證和頁面資料渲染的時候會用到正規表示式,對正規表示式也不是很熟悉。1 test 匹配字串如果匹配到,包含返回true,不包含返回fal...