【问题标题】:jQuery regex limit user to enter integers and float number valuesjQuery 正则表达式限制用户输入整数和浮点数值
【发布时间】:2017-05-09 11:28:37
【问题描述】:

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

 <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 验证发生在以下基础上:

    • 如果用户输入除整数或浮点数之外的任何内容,则会显示错误。

例如,当我输入: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

由于某种原因我仍然收到错误???

Entry only number for minimum price

我在这里做错了什么?

【问题讨论】:

    标签: javascript jquery asp.net regex validation


    【解决方案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+)?$/;
    

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

    【讨论】:

    • 哦,天哪,你一定是在跟我开玩笑,伙计,只有这才是问题所在?谢谢 !!! :)这个正则表达式是否符合我上面提到的标准,例如它不允许带逗号的数字?
    • 听起来不错。附:如何扩展此正则表达式,以便该字段不需要具有值,但如果确实如此,我将根据正则表达式对其进行验证(不使用额外的 if 语句)
    • 使用\d*(零次或多次)代替\d+(一次或多次)-^[+-]?\d*(\.\d+)?$
    • 这是否也适用于 html 验证?例如将模式标签放在文本框上,然后: pattern="^[+-]?\d*(\.\d+)?$" ?
    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    相关资源
    最近更新 更多