jQuery正则表达式限制用户输入整数和浮点数值

时间:2016-12-23 19:21:28

标签: javascript jquery asp.net regex validation

我有两个文本框(输入字段),如下所示:

 <input type="text" class="txtmin" placeholder="Minimum price">

            <input type="text" class="txtmax" placeholder="Maximum price">

我尝试使用这样的方法来阻止用户输入以下值:

  1. 如果用户没有在这两个值中输入任何内容,他可以继续。

  2. 如果用户在txtmin文本框中输入了某些内容,但未在txt max中输入任何内容,则只能对txtmin进行验证

  3. 喜欢2,反之亦然

  4. 以下基础进行2和3验证:

    • 如果用户输入除整数或浮点数之外的任何内容,则会显示错误。
  5. 例如,当我输入:1或2.50或1.00时,这是可以的......

    不允许使用逗号的数字。

    所以我尝试过如下:

    $(".btnGo").click(function () {
                 var r = new RegExp("/^[+-]?\d+(\.\d+)?$/");
                 var min = $('.txtmin').val();
                 var max =$('.txtmax').val(); 
                if ($('.txtSearch').val() == "") {
                    ShowMessage("All fields are required");
                    return;
                } else if ($('.txtmin').val() != "") {
                    if (!r.test(min)) {
                        ShowMessage("Entry only number for minimum price!");
                        return;
                    }
                }
                else {
                    PostAndUpdate($('.txtSearch').val(), $('input[name=type]:checked').val(), $('input[name=shipping]:checked').val(), $('input[name=condition]:checked').val(), $('.txtmin').val(), $('.txtmax').val());
                }
            });
    

    但是,例如,当我不离开txtmin值为空时,我输入:

    1.25 <&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;

    我仍然因某种原因得到错误???

    Entry only number for minimum price
    

    我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

从你的正则表达式中取出引号。

var r = new RegExp(/^[+-]?\d+(\.\d+)?$/);

跟进:您可以声明由/.../或引号分隔的正则表达式,但不能同时声明两者。如果使用引号,则需要遵循常规的javascript转义规则并使用双反斜杠。如果使用斜杠分隔,您也不需要使用new RegExp。这些都是有效的和等效的。

var r = new RegExp(/^[+-]?\d+(\.\d+)?$/);
var r = new RegExp("^[+-]?\\d+(\\.\\d+)?$");
var r = /^[+-]?\d+(\.\d+)?$/;

不,这不会允许带逗号的数字。