使用正则表达式验证特定范围
Validate particular range using regex
我想要验证具有特定范围的文本框,其格式如下:
1-99
我正在使用正则表达式:
/^(?:100|[1-9]'d|'d)-(?:100|[1-9]'d|'d)$/
它对我有用,但没有什么问题,它接受这个:
55-50
不应该,这是错误的。
我该如何纠正此问题?
正如人们所说,早期正则表达式不是验证范围的方法。更好的方法是使用 if/else
语句。但是,您在使用正则表达式来验证特定格式的输入字符串方面不受限制。
F.i.,如果您想使最终用户能够以格式输入范围 number1-number2
,您可以检查字符串是否符合此格式,并检查其部分是否投诉条件number1 <= number2
。如果所有这些检查都已完成,您可以做一些有用的事情,或者如果检查失败,您可以拒绝。
function validRange(rangeStr, min, max) {
var m = rangeStr.match(/^([0-9]+)-([0-9]+)$/);
if ( m && m[1] >= min && m[2] <= max && m[1] <= m[2] ) {
return true;
}
return false;
}
var s = '1-99';
var s = '55-50';
if ( validRange(s, 1, 99) ) {
// do something useful
}
上面的代码只是进一步改进的框架,但现在可以使用。但是代码可能太复杂了,如果您或您的客户要求实现更复杂的东西,例如输入单个数字的能力,数字列表(用逗号,分号等分隔),混合范围或所有这些的任意组合。
因为您需要检查两个数字之间的验证,所以您必须使用逻辑运算来检查 forst 数字是否小于秒,因此在这种情况下您不能使用正则表达式,而是使用 if/else
语句:
var input = "55-50";
if(input.indexOf('-')){
var input_arr = input.split('-');
if(input_arr.length==2 && parseInt(input_arr[0])<parseInt(input_arr[1]))
alert("Accepted");
else
alert("Not accepted");
}
相关文章:
- 如何创建一个方法来验证数组的范围
- JavaScript-仅验证数值并且在范围内
- 用于验证数字范围的正则表达式
- 使用正则表达式验证特定范围
- 正则表达式用于验证两个范围之间的数字
- Javascript/Jquery:使用数字范围验证输入
- 如何在 AngularJS 中设置范围验证
- 用于双精度数范围验证的正则表达式
- 使用 JavaScript 或 jQuery 进行价格范围验证
- GridView asp .net 中的日期范围验证
- jquery Datepicker日期范围验证
- 如何使用javascript创建范围验证器?在VS中不使用范围验证器控件
- 如何使用范围验证器
- Jquery 数值范围验证
- 纯javascript html 5文本类型数字范围验证
- 需要年份范围验证脚本或jquery
- 在html输入上显示范围验证器错误消息
- asp.net中的范围验证
- HTML.TextBox用于范围验证
- 在jquery中添加超过4个文本框的时间选择器范围验证