[英]validate amount field using javascript
我一直在到處尋找解決方案,但是沒有什么可以滿足我的標准。
我想讓用戶輸入帶正號(可選的2個小數點,中間用點“。”隔開)。
即:1.23、12.23、123.23、1234.23、1、0
我怎樣才能做到這一點?
我試圖使用此正則表達式
$('form').submit(function(){
var amount = $('#amount');
var regex = new RegExp("^\d+(\.\d{1,2})?$");
var error = 0;
if(amount.val() == '' || amount.val() <= 0 || regex.test(amount.val()) == false){
$('label', amount.parent()).addClass('error');
error++;
}else{
$('label', amount.parent()).removeClass('error');
}
if(error > 0){
return false;
}
});
我對正則表達式不是很有經驗,並嘗試使用上面通過搜索找到的代碼,但是它似乎沒有用,我也不知道為什么。 我不確定這是否是正則表達式或我使用它的方式中的錯誤。
使用var regex = new RegExp("^[-+]?\\d+(\\.\\d\\d?)?$");
小數點后兩位(第一項為強制性,第二項為非強制性)。
就像是:
^\d+(\.\d{1,2})?$
注意我們刪除了符號部分[-+]?
因為您只說了正數。
說明:
^ start of string
\d+ match zero or more digits
(\.\d{0,2})? match the pattern in the brackets 0 or 1 time
\. match a literal .
\d{1,2) match 1 or 2 digits
$ end of string
因此,這允許一些數字(可選)后跟一個.
和另外1或2位數字。 根據需要進行調整。
var rx = /^\\d+(\\.\\d{1,2})?$/; alert(rx.test("1.22") + "\\n" // true + rx.test("10") + "\\n" // true + rx.test("2223.4") + "\\n" // true + rx.test("foo") + "\\n" // false + rx.test("1..22") + "\\n" // false + rx.test(" 1")); // false
您發布的正則表達式允許任意數量的小數位。 這個只允許2位小數
var regex = new RegExp("^[-+]?\d+(\.\d\d?)?$");
它很長很丑,我不記得我最初從哪里得到的,但這是我使用的那個(它也驗證了正確的逗號分隔,並且在開始時允許可選的$):
var regex = /^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(.[0-9]{2})?$/;
這是一個有效的小提琴: http : //jsfiddle.net/5v9zcxrm/5/
對於小數位,我使用(。[0-9] {2})僅驗證2個小數位或零。 如果要允許使用小數點后一位:
var regex = /^\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|[0-9]+)?(.[0-9]{1,2})?$/;
如果您只需要數字(沒有逗號)並且可能的一位或兩位數字十進制數,請使用:
var regex = /^\d+(.[0-9]{1,2})?$/;
$('form').submit(function(){
var amount = $('#amount');
var regex = /^\d+(\.\d{2,2})?$/;
var error = 0;
if(amount.val() == '' || amount.val() <= 0 || regex.test(amount.val()) == false){
$('label', amount.parent()).addClass('error');
error++;
}else{
$('label', amount.parent()).removeClass('error');
}
if(error > 0){
return false;
}
});
這是我更新的解決方案,可以正常使用。 特別感謝Matt Burland和所有使這一切成為可能的人
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.