Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery验证插件中的一条验证规则是否会抑制另一条验证规则?_Jquery_Regex_Jquery Validate - Fatal编程技术网

jquery验证插件中的一条验证规则是否会抑制另一条验证规则?

jquery验证插件中的一条验证规则是否会抑制另一条验证规则?,jquery,regex,jquery-validate,Jquery,Regex,Jquery Validate,我有以下代码 <html> <head> <title>Untitled Document</title> <script type="text/javascript" src="js/jquery-1-4-2.js"></script> <script type="text/javascript" src="js/jquery_validate.js"></script> <script ty

我有以下代码

<html>
<head>
<title>Untitled Document</title>
<script type="text/javascript" src="js/jquery-1-4-2.js"></script>
<script type="text/javascript" src="js/jquery_validate.js"></script>
<script type="text/javascript">

$(document).ready(function(){

$("#form1").validate({
    rules: {
            fld1: {
                methodtwo: true,
                methodone: true
            }
           },
    messages: {
        fld1: {
            methodtwo: "<br> 2Wrong Project Name.",
            methodone: "<br> 1Wrong Project Name."

              }
        }

      });
});   

$.validator.addMethod('methodone', function (value) { 
    return /^[a-zA-Z0-9]+$/.test(value); 
}, 'wrong1.');

$.validator.addMethod('methodtwo', function (value) { 
    return /^[a-zA-Z^0-9]+$/.test(value); 
}, 'wrong2.');



</script> 


</head>
<body>
<form  id="form1"name="form1" action="" method="get">
<table width="80%"  border="0">
  <tr>
  <td><input type="text" name="fld1" id="idfld1"></td>
</tr>
 <tr>
 <td><input type="submit" name="submit" id="idsubmit"></td>
</tr>
</table>
</form>
</body>
</html>

无标题文件
$(文档).ready(函数(){
$(“#表格1”)。验证({
规则:{
fld1:{
方法二:对,
方法一:对
}
},
信息:{
fld1:{
方法二:“
2错误的项目名称。”, 方法一:“
1错误的项目名称。” } } }); }); $.validator.addMethod('methodone',函数(值){ 返回/^[a-zA-Z0-9]+$/.测试(值); }“错误1”); $.validator.addMethod('methodtwo',函数(值){ 返回/^[a-zA-Z^0-9]+$/.test(值); }“错误2”);
执行上述代码后,我希望如果我们输入

  • 字母a-zA-z,然后它将接受输入,并接受
  • 任何特殊字符,它将显示错误,并显示错误
  • 但当我们输入数字0-9时,我希望它会显示Method2的错误消息。但它接受了
  • 请给我解释一下为什么会这样?当我检查两个相反的验证规则应用于一个字段时会发生什么情况

    请向我解释一下,朋友们,这段代码或一条验证规则抑制另一条验证规则有什么问题吗


    谢谢大家!

    当它是字符类中的第一个字符时,
    ^
    仅表示“不是”。在任何其他位置,它表示文字
    ^

    所以你可能想要

    /^\D+$/
    
    方法2。(
    \D
    表示“除数字以外的任何字符”,其中已包括
    a-zA-Z


    然而,我不确定你到底想做什么。您可以将所有这些规则组合成一个正则表达式(但目前它们确实相互矛盾,因此有点令人费解)。

    正如Tim正确指出的那样,
    ^
    插入符号是字符类中的第一个字符时,它只是一个元字符

    在编写正则表达式时,有一件事很有帮助,那就是用英语(或你选择的母语)写出正则表达式所匹配的内容。让我们用两个正则表达式来实现这一点:

    第一个正则表达式:
    /^[a-zA-Z0-9]+$/
    表示:“在字符串的开头匹配一个或多个字母或数字字符,然后匹配字符串的结尾。”

    第二个正则表达式:
    /^[a-zA-Z^0-9]+$/
    表示:“在字符串的开头匹配一个或多个可以是字母、插入符号或数字的字符,然后匹配字符串的结尾。”

    当你像这样把它拼出来时,你的错误马上就显现出来了。对于第二个正则表达式,只需从允许字符的字符类中删除数值表达式,如下所示:

    新正则表达式:
    /^[a-zA-Z]+$/
    表示:“在字符串的开头匹配一个或多个字母字符,然后匹配字符串的结尾。”