Javascript 正则表达式未显示正确的错误消息

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

我正在尝试对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(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.]+