正则表达式(用于jQuery)验证带有2个小数点的正数

she*_*nyL 4 regex validation jquery match

我需要使用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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

类似的字符串"abc"不通过检查.但无效字符喜欢@#$%"/"确实通过了检查,这导致我的方法出错.

我正在寻找正则表达式:

火柴: 1.20, 1, 2.00, 3.1

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

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

fge*_*fge 6

使用:

var intRegex = /^\d+(?:\.\d\d?)?$/;
Run Code Online (Sandbox Code Playgroud)

这应该工作.


Ala*_*ore 5

这就是你原始正则表达式误报的原因:

/[0-9 -()+]+$/
     ^^^
Run Code Online (Sandbox Code Playgroud)

我加下划线的部分形成了一个从空格字符(U+0020)到左括号(U+0028)的范围,使你的正则表达式相当于:

/[0-9 !"#$%&'()+]+$/
Run Code Online (Sandbox Code Playgroud)

如果要匹配连字符,则需要使用反斜杠将其转义或将其放在集合的开头或结尾,如下所示:

/[0-9 ()+-]+$/  
Run Code Online (Sandbox Code Playgroud)

另外,如果"正则表达式库"是指RegExLib.com,我不相信我在那里发现的任何正则表达式.你发布的那个就是一个例子:

/(^\d*\.?\d*[0-9]+\d*$)|(^[0-9]+\d*\.\d*$)/
Run Code Online (Sandbox Code Playgroud)

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

/^(\d*\.?\d+|\d+\.\d*)$/
Run Code Online (Sandbox Code Playgroud)

其次,它匹配字符串一样123.000000.0000000,你可能不希望.如果您确实只想匹配正数,则必须确保在小数点之前或之后字符串中至少有一个非零数字.这是一种方法:

/^(?:[1-9]\d*(?:\.\d\d?)?|0\.[1-9]\d?|0\.0[1-9])$/
Run Code Online (Sandbox Code Playgroud)