2016-01-14 129 views
-3

我想匹配正則表達式的字符只允許正數和十進制值。下面的正則表達式工作正常,但我可以填寫兩個小數點。RegExp只允許正整數和小數

jQuery的

$(".qtyValidation").keypress(function (e) { 
    if (String.fromCharCode(e.keyCode).match(/[^0-9\.]/g)) return false; 
}); 

輸入字段

<input class="mt-my-prices-product-quantity qtyValidation" min="0" type="number" value="1"> 

據disallwoing negavite號碼,但它是允許1..2或者1.56.45這樣。

正則表達式只允許有一個小數點。

+0

['^ [0-9] *(\。[0-9] +)?$'](https://regex101.com/r/cH9fG9/1)? – Tushar

+0

@Tushar,不,那是錯誤的。 –

回答

1

嘗試這種情況:

if (String.fromCharCode(e.keyCode).match(/^[0-9]+(\.[0-9]{1,2})?$/g)) return false; 

([0-9] {1,2})。?只允許兩位十進制

(。[0-9] +)?允許任意小數點數

+0

這將匹配任意數量的小數,downvoted。 –

+0

^[0-9] +(\。[0-9] {1,2})?將不匹配任何小數位數。請解釋你的評論? – Vegeta

+0

是的,它會的。這是公然錯誤的。在控制檯中運行以下命令:'/^[0-9] +(\。[0-9] {1,2})?/。test('123.456')'。爲了解決這個問題,你需要在表達式中添加'$'。 –