JQuery Проверка валюты США regEx, чтобы разрешить целые числа, а также - PullRequest
10 голосов
/ 29 мая 2009

У меня есть это регулярное выражение, но теперь нужно разрешить числа без десятичной дроби

// Validate for 2 decimal for money
jQuery.validator.addMethod("decimalTwo", function(value, element) {
    return this.optional(element) || /^(\d{1,3})(\.\d{2})$/.test(value);
}, "Must be in US currency format 0.99");

В настоящее время это вынуждает пользователя по крайней мере добавить .00 к числу, он хотел бы, чтобы текущее регулярное выражение и целые числа без десятичной дроби.

я бы просто добавил? в конце второй половины RegEx?

// Validate for 2 decimal for money
jQuery.validator.addMethod("decimalTwo", function(value, element) {
    return this.optional(element) || /^(\d{1,3})(\.\d{2})?$/.test(value);
}, "Must be in US currency format 0.99");

EDIT:

Хорошо, но что, если кто-то введет 1.2?

Ответы [ 5 ]

14 голосов
/ 29 мая 2009

Если вы хотите, чтобы 1, 1.2 и 1.20 все работали:

/^(\d{1,3})(\.\d{1,2})?$/
2 голосов
/ 29 мая 2009

Да, просто добавить? до конца второй группировки, чтобы сделать его необязательным. Это должно работать хорошо.

0 голосов
/ 24 декабря 2015

Я хотел проверить на keyup. Поэтому мне нужно было принять 999 999. до того, как была введена первая десятичная позиция (десятые). Но я все еще хотел получить максимум в 2 десятичных (сотых) позициях - предполагая, что в моем коде введено 999,1 == 999,10.

var currencywithcommas = /^(\d+|\d{1,3}(,\d{3})*)+(\.\d{2})?$/;
if ($("#yourelement").val().match(currencywithcommas)) {
  // positive match code
}

UPDATE: Я в конечном итоге с помощью плагина проверки jQuery из-за реализации.

Код прототипа:

jQuery.validator.addMethod("currencywithcommas", function (value, element) {
    var currencywithcommasReg = /^(\d+|\d{1,3}(,\d{3})*)+(\.\d{2})?$/;
    return this.optional(element) || value.match(currencywithcommasReg);
}, "Must be in US currency format 9.99");

Реализация:

    $("#form1").validate({
        rules: {
            amount1: {
                required: true,
                currencywithcommas: true
            },
...

Та же концепция, но расширенная для использования функциональности проверки.

$(".reqField1").each(function () {
    $(this).keyup(function () {
        $("#submitButton").prop("disabled", CheckInputs(".reqField1"));
    });
});

function CheckInputs(reqfldclass) {
    var valid = false;
    $(".reqField1").each(function () {
        if (valid) { return valid; }
        var input = $.trim($(this).val());
        valid = !input;
    });
    return valid;
}

И, Боб, твой дядя ...

0 голосов
/ 07 июня 2014

Это был лучший, целостный ответ, который мы использовали для входных данных регулярных выражений, который включает в себя все, что нам нужно: } ([0-9] {3}) *) |?.? [0-9] +) ([0-9] {1,2}) $ /

0 голосов
/ 31 июля 2012
$.validator.addMethod("money", function (value, element) {
     if ($("#<%= rdOtherAmt.ClientID %> input:checked")) {
         return this.optional(element) || /^((\d{1,5})+\.\d{2})?$|^\$?[\.]([\d][\d]?)$/.test(value);
     }                 
});

Это будет отлично работать, занимает два десятичных знака.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...