我正在尝试使用字段rate_model的验证。我已经使用了Jquery验证。 rate_model应该接受两种格式
1. Number,number (if user enters only two number)
2. Number,number;number,number (if user enters more than two number it should be separated by ; (semicolon) )
这些是我的验证方案。
$(document).ready(function(){
$.validator.addMethod("regex_rate",function(value, element, regexp) {
return this.optional(element) || regexp.test(value); });
$("#frm_add_country").validate({
rules: {
rate_model: {
required: true,
regex_rate:/^([0-9],[0-9])|([0-9],[0-9];)$/
}
},
messages: {
rate_model: {
required: "Please enter description",
regex_rate: "please enter (number,number) or (number,number);(number,number) ",
},
},
submitHandler: function (form) {
console.log("true");
}
});
});
这是我的jquery验证
<form id="frm_add_country" name="frm_add_country" method="post">
<input type="text" id="rate_model" name="rate_model" class="form-control" >
</form>
这是我提交的表格
/^([0-9],[0-9])|([0-9],[0-9];)$/
这个正则表达式不能用于我预期的场景
答案 0 :(得分:2)
这个正则表达式完成了这项工作
/^\d+,\d+(?:;\d+,\d+)*$/
<强>解释强>
/ : regex delimiter
^ : begining of string
\d+ : 1 or more digits
, : a comma
\d+ : 1 or more digits
(?: : start non capture group
; : a semicolumn
\d+ : 1 or more digits
, : a comma
\d+ : 1 or more digits
)* : end group, 0 or more times
$ : end of string
/ : regex delimiter
答案 1 :(得分:1)
@toto是正确的。
只有一次更正,如果还有更多的数字 -
15,16; 17,18; 19,20等
我们还需要在最后添加*。所以它将是
说明:
/ : regex delimiter
^ : beginning of string
\d+ : 1 or more digits
, : a comma
\d+ : 1 or more digits
(?: : start non capture group
; : a semicolon
\d+ : 1 or more digits
, : a comma
\d+ : 1 or more digits
)* : end group, one or more repetition
? : optional
$ : end of string
/ : regex delimiter