2016-06-20 23 views
-2

我有檢查,如果輸入字段中它只有數字的正則表達式:我有隻允許數字的正則表達式,但需要一個浮動的0也

if (paymentAmount.match(/[^0-9\.,]/g)) ... show error 

我還需要檢查是否價值之前還有0。例如,0001.23應該拋出一個錯誤,但1.23應該沒問題。

有沒有辦法將此添加到當前的正則表達式檢查?

+0

請添加您正在使用的語言。這可能會影響問題的答案。 –

回答

2

您可以使用此:

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

這也將檢測與兩個小數點輸入和數字超過2位小數。

下面是一些測試:

function numCheck(paymentAmount) { 
 
\t console.log(paymentAmount, 
 
       (paymentAmount.match(/^(?!([1-9]\d*|0)(\.\d\d?)?$)/)) 
 
        ? ' error' : ' ok'); 
 
} 
 

 
numCheck("1.0"); 
 
numCheck("1.0.0"); 
 
numCheck("01.0"); 
 
numCheck("1"); 
 
numCheck("10.09"); 
 
numCheck("10."); 
 
numCheck(".01"); 
 
numCheck("10.0901");

然而,這是更簡單的做一個陽性測試,即測試確認格式是正確的。您總是可以用!否定結果:

if (!paymentAmount.match(/^([1-9]\d*|0)(\.\d\d?)?$/)) ... 
+0

你可以添加這種檢查到上面的正則表達式。 numCheck( 「10.0901」);所以只有2個數字可以在小數點後面。 –

+0

我已經更新了我的答案以包含該規則。 – trincot

+0

謝謝你這麼做。 :) –

0

你可以這樣做:

if (/[^0-9.,]/g.test(paymentAmount) || /^0+[1-9.]/.test(paymentAmount)) { 
    // ... show error 
} 

^0+[1-9]將任何數字[1-9]或小數點前面匹配1個或多個零。

相關問題