我有檢查,如果輸入字段中它只有數字的正則表達式:我有隻允許數字的正則表達式,但需要一個浮動的0也
if (paymentAmount.match(/[^0-9\.,]/g)) ... show error
我還需要檢查是否價值之前還有0。例如,0001.23
應該拋出一個錯誤,但1.23應該沒問題。
有沒有辦法將此添加到當前的正則表達式檢查?
我有檢查,如果輸入字段中它只有數字的正則表達式:我有隻允許數字的正則表達式,但需要一個浮動的0也
if (paymentAmount.match(/[^0-9\.,]/g)) ... show error
我還需要檢查是否價值之前還有0。例如,0001.23
應該拋出一個錯誤,但1.23應該沒問題。
有沒有辦法將此添加到當前的正則表達式檢查?
您可以使用此:
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?)?$/)) ...
你可以添加這種檢查到上面的正則表達式。 numCheck( 「10.0901」);所以只有2個數字可以在小數點後面。 –
我已經更新了我的答案以包含該規則。 – trincot
謝謝你這麼做。 :) –
你可以這樣做:
if (/[^0-9.,]/g.test(paymentAmount) || /^0+[1-9.]/.test(paymentAmount)) {
// ... show error
}
^0+[1-9]
將任何數字[1-9]
或小數點前面匹配1個或多個零。
請添加您正在使用的語言。這可能會影響問題的答案。 –