簡體   English   中英

使用javascript驗證金額字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM