【问题标题】:Regex (for jQuery) to validate positive numbers with 2 decimal points正则表达式(用于 jQuery)验证带 2 个小数点的正数
【发布时间】:2012-01-22 20:04:56
【问题描述】:

我需要使用 jQuery 将字段与正则表达式匹配。目前我正在使用:

 onsubmit: function (settings, td) {
            //select integers only
            var intRegex = /[0-9 -()+]+$/;
            var input = $(td).find('input');
            var original = input.val();

            if (original <= 0) {
                Alert('The amount should be bigger than 0');
                return false;
            }
            if (!original.match(intRegex)) {
                Alert('Please enter a valid number');
                return false;
            }
            else {
                return true;
            }
        }

"abc" 这样的字符串没有通过检查。但是像@#$%"/" 这样的无效字符确实通过了检查,这会导致我的方法出错。

我正在寻找正则表达式:

匹配:1.20, 1, 2.00, 3.1

不匹配:-1.2, abc, 1/2, $, @#$%

我浏览了正则表达式库,但如果我将 (^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$) 放入我的脚本中,我会收到语法错误...

【问题讨论】:

  • 提示:这是一个很好的正则表达式测试站点:gskinner.com/RegExr
  • 感谢您的介绍 :)

标签: jquery regex validation match


【解决方案1】:

这就是您使用原始正则表达式得到误报的原因:

/[0-9 -()+]+$/
     ^^^

我加下划线的部分构成了从空格字符 (U+0020) 到左括号 (U+0028) 的范围,使您的正则表达式等同于:

/[0-9 !"#$%&'()+]+$/

如果你想匹配一个连字符,你要么需要用反斜杠转义它,要么将它放在集合的开头或结尾,如下所示:

/[0-9 ()+-]+$/  

另外,如果您所说的“正则表达式库”是指 RegExLib.com,我不会相信我在那里找到的任何正则表达式。你发布的就是一个例子:

/(^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$)/

首先,它可以写得更简洁:

/^(\d*\.?\d+|\d+\.\d*)$/

其次,它匹配123.000000.0000000 之类的字符串,这可能是您不想要的。如果您真的只想匹配正数,则必须确保字符串中至少有一个非零数字,无论是在小数点之前还是之后。这是一种方法:

/^(?:[1-9]\d*(?:\.\d\d?)?|0\.[1-9]\d?|0\.0[1-9])$/

【讨论】:

    【解决方案2】:
    var regxp = /^\d+(\.\d{1,2})?$/;
    

    【讨论】:

      【解决方案3】:

      用途:

      var intRegex = /^\d+(?:\.\d\d?)?$/;
      

      应该可以的。

      【讨论】:

      • 我需要添加什么吗?如果我输入 var intRegex = ^\d+(?:.\d\d)$; 会导致语法错误谢谢!
      • 查看后期编辑,我包括了 var 初始化以及我发现的一个错误
      • 感谢您的热心和快速帮助!
      猜你喜欢
      • 1970-01-01
      • 2017-07-21
      • 2016-03-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多