Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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
Javascript jQuery电话正则表达式验证_Javascript_Jquery_Regex_Validation_Format - Fatal编程技术网

Javascript jQuery电话正则表达式验证

Javascript jQuery电话正则表达式验证,javascript,jquery,regex,validation,format,Javascript,Jquery,Regex,Validation,Format,我在一个页面上有jQuery验证插件。当有人在表单字段中键入电话号码时,我希望验证器只识别特定格式(ru): 我在.js文件中有以下内容: $.validator.addMethod('customphone', function (value, element) { return this.optional(element) || /^\+d{1}(\d{3})\d{7}$/.test(value); }, "Please enter a valid phone number");

我在一个页面上有jQuery验证插件。当有人在表单字段中键入电话号码时,我希望验证器只识别特定格式(ru):

我在.js文件中有以下内容:

$.validator.addMethod('customphone', function (value, element) {
    return this.optional(element) || /^\+d{1}(\d{3})\d{7}$/.test(value);
}, "Please enter a valid phone number");

$(document).ready(function() {
    $('form').validate({    
        rules: {
            phone: 'customphone'
        } ...
这对我不起作用,有人知道为什么吗?还是有更好的方法来做到这一点?:)

这对我不起作用,有人知道为什么吗?还是有更好的方法 如何做到这一点?:)

您的代码有几个问题

  • 正如Tushar所指出的,
    d
    将只匹配
    d
    ,以匹配您需要的数字
    \d

  • 您的正则表达式负担不起很多东西,包括
    (####)
    -

  • 我猜你在找这个正则表达式

    /^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g
    
    它将与你的梦想相匹配

    /^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4(222)-33-33-33"); //true
    /^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4(222)-333-333-333"); //true
    /^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4(222)333333333"); //true
    /^\+\d(\(\d{3}\)){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test("+4333333333"); //true
    

    您需要以下正则表达式:

    /^\+(?:\d(?:\(\d{3}\)|-\d{3})-\d{3}-(?:\d{2}-\d{2}|\d{4})|\d{11})$/
    

    您拥有的正则表达式
    ^\+d{1}(\d{3})\d{7}$
    具有
    d
    ,而不是
    \d
    (因此无法匹配数字)和未替换的括号(因此模式与文字括号不匹配)

    细分:

    • ^
      -字符串的开头
    • \+
      -文字符号
      +
    • (?:\d(?:(\d{3}\)-\d{3}-(?:\d{2}-\d{2}\d{4})\d{11})
      -两个备选方案:

      • \d(?:\(\d{3}\)-\d{3}-\d{3}-(?:\d{2}-\d{2}\d{4})
        • \d
          -一个数字
        • (?:\(\d{3}\)-\d{3})
          -要么像子字符串一样
          (123)
          ,要么像子字符串一样
          -123
        • -\d{3}
          -一个连字符,后跟3位数字
        • -
          -连字符
        • (?:\d{2}-\d{2}\d{4})
          -两位数字后跟连字符和两位或四位数字
      • |
        -或
      • \d{11}
        -11位数字
    • $
      -字符串结尾


      • 我不确定您的javaScript,但这里是您必须检查的不同正则表达式。。。。我希望这有帮助

        +#(###)-###-##-##
        ^\+\d{1}\(\d{3}\)\-\d{3}\-\d{2}\-\d{2}$
        +#-###-###-####
        ^\+\d{1}\-\d{3}\-\d{3}\-\d{4}$
        +#-###-##-##
        ^\+\d{1}\-\d{3}\-\d{2}\-\d{2}$
        +###########
        ^\+\d{11}$
        
        所以我会设置一个phone is valid标志并测试每个regex值,以确定其中一个是否为真。将此标志设置为真,它将验证您的电话号码

        var phoneValid = false;
        
        if(test1 == true || test2 == true || test3 == true || test4 == true) {
          phoneValid = true;
        } else {
          phoneValid = false;
        }
        

        d
        匹配
        d
        字母表。您希望
        \d
        匹配数字<代码>)需要转义以匹配右大括号。此外,它将只匹配11个字符串digits@gurvinder372我错过了没错,在我看来,它最适合你。它不会,因为你没有逃过字符+888888888(11个符号)-这是行不通的<代码>/^+\d(\(\d{3}){0,1}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}(\-){0,1}\d{2,3}$/g.test(“+4333333333”)-只有10个符号,我需要11个。求求你,救命!
        var phoneValid = false;
        
        if(test1 == true || test2 == true || test3 == true || test4 == true) {
          phoneValid = true;
        } else {
          phoneValid = false;
        }