Javascript 正则表达式未显示正确的错误消息
我正在尝试对field rate_模型使用验证。我已经为此使用了Jquery验证。rate_模型应接受两种类型的格式Javascript 正则表达式未显示正确的错误消息,javascript,jquery,regex,Javascript,Jquery,Regex,我正在尝试对field rate_模型使用验证。我已经为此使用了Jquery验证。rate_模型应接受两种类型的格式 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(fu
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>
此正则表达式不适用于我预期的场景此正则表达式完成此任务
/^\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
这个正则表达式完成了这项工作
/^\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
@toto是正确的。只要一次更正,如果还有更多的数字,如- 15,16;17,18;19,20等等
我们还需要在末尾附加*号。就这样吧 /^\d+,\d+(?:;\d+,\d+*$/ 说明:
/ : 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
@toto是正确的。只要一次更正,如果还有更多的数字,如- 15,16;17,18;19,20等等
我们还需要在末尾附加*号。就这样吧 /^\d+,\d+(?:;\d+,\d+*$/ 说明:
/ : 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
试试:
/^\d+,\d+(?:;\d+,\d+)?$/
“Correct”==expected试试:/^\d+,\d+(?:;\d+,\d+),$/
“Correct”==expectedIt有效,但我想要(number,number;)模式infinite@vaibhav:只需将量词?
(0或1)替换为*
(0或更多)是的,它是有效的。但是小数点到4个小数点的数字表示这个表达式为5.4444,或者在这种情况下,只有一个像5这样的数字表示失败。它如何修改?@vaibhav:将所有\d+
替换为[\d.]+
它可以工作,但我想要(数字,数字;)模式infinite@vaibhav:只需将量词?
(0或1)替换为*
(0或更多)是的,它是有效的。但是小数点到4个小数点的数字表示这个表达式为5.4444,或者在这种情况下,只有一个像5这样的数字表示失败。如何修改?@vaibhav:将所有\d+
替换为[\d.]+