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*$)脚本中,我会收到语法错误...
这就是你原始正则表达式误报的原因:
/[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)
| 归档时间: |
|
| 查看次数: |
18185 次 |
| 最近记录: |