Javascript 带或不带国家/地区代码的手机号码的正则表达式

Javascript 带或不带国家/地区代码的手机号码的正则表达式,javascript,regex,validation,Javascript,Regex,Validation,我需要在我的注册表中验证一个文本字段,我想要一个正则表达式 文本框将接受类似9999999999的手机号码(10位数字-从7、8或9开始)。 用户也可以写入+919999999,其中+91是国家代码(+91代表印度,但可以接受任何其他类似+110或+52),或者他也可以写入099999999(前0代表本国) 在这里,用户有3个选择 添加带有国家/地区代码的手机号码 不带国家/地区代码或前缀0 手机号码的前缀为零 虽然不是必需的,但我的页面在asp.net中,我正在使用内置的正则表达式验证器。这应

我需要在我的注册表中验证一个文本字段,我想要一个正则表达式

文本框将接受类似9999999999的手机号码(10位数字-从7、8或9开始)。 用户也可以写入+919999999,其中+91是国家代码(+91代表印度,但可以接受任何其他类似+110或+52),或者他也可以写入099999999(前0代表本国)

在这里,用户有3个选择

  • 添加带有国家/地区代码的手机号码
  • 不带国家/地区代码或前缀0
  • 手机号码的前缀为零

  • 虽然不是必需的,但我的页面在asp.net中,我正在使用内置的正则表达式验证器。

    这应该可以做到:

    ^(\+[\d]{1,5}|0)?[7-9]\d{9}$
    

    从我看来,这应该行得通。前缀是可选的,存储在第一个匹配组中,主编号进入第二个组

    ^([0|\+[0-9]{1,5})?([7-9][0-9]{9})$
    
    但是如果你能给我们每个测试用例,它将帮助我们为你提供一个你想要的工作正则表达式

    在评论中向Schlaviener推荐正确的国家代码长度限制。

    if(document.getElementById('mobile_number')。value!=“”){
    
    if(document.getElementById('mobile_number').value != ""){
    
           var y = document.getElementById('mobile_number').value;
           if(isNaN(y)||y.indexOf(" ")!=-1)
           {
              alert("Invalid Mobile No.");
              document.getElementById('mobile_number').focus();
              return false;
           }
    
           if (y.length>10 || y.length<10)
           {
                alert("Mobile No. should be 10 digit");
                document.getElementById('mobile_number').focus();
                return false;
           }
           if (!(y.charAt(0)=="9" || y.charAt(0)=="8"))
           {
                alert("Mobile No. should start with 9 or 8 ");
                document.getElementById('mobile_number').focus();
                return false
           }
     }
    
    var y=document.getElementById('mobile_number')。值; if(isNaN(y)| y.indexOf(“”)=-1) { 警报(“无效手机号码”); document.getElementById('mobile_number').focus(); 返回false; }
    如果(y.length>10 | | y.length,也可以使用字符串操作来完成。请检查此项


    结果将是印度移动号码验证的简单regexp:
    /^[0]?[789]\d{9}$/

    支持 0888888888(零附加) 78863445687699545559877(任何手机号码前面加7,8,9,后面加其他9位数字)

    全功能

    function mobileNumber(){
    
         var Number = document.getElementById('YOUR ELEMENT ID').value;
         var IndNum = /^[0]?[789]\d{9}$/;
    
         if(IndNum.test(Number)){
            return;
        }
    
        else{
            $('#errMessage').text('please enter valid mobile number');
            document.getElementById('profile_telephoneNumber').focus();
        }
    
    }
    
    请尝试以下操作:

    function validateMobile(mobilenumber) {   
        var regmm='^([0|+[0-9]{1,5})?([7-9][0-9]{9})$';
        var regmob = new RegExp(regmm);
        if(regmob.test(mobilenumber)){
            return true;
        } else {
            return false;
        }    
    }
    

    这也将匹配
    +12345679999999
    )@schlaviener是-他没有指定任何类型的区号有效时间限制,所以我只是将其保留为“在+”之后至少有一个数字。将第一部分更改为
    ^([0 | \+[0-9]{123456})?
    并将
    123
    替换为最小长度,将
    456
    替换为最大长度将解决这一问题,好的,谢谢,@schlaviener和Joe再次更新,Joe是正确的,我没有提到最大/最小尺寸,但我确实需要它。所以,干杯……你是对的,他没有指定限制。但是wikipedia:所以它应该是
    \d{1,5}
    无论任何特定的国家代码,这个
    ^([0}\+[0-9]{1,5})([0-9]{10})$
    也适用于通用电话号码并非所有的手机号码都以7、8或9开头。我的手机号码也不是以4开头的。它们也不是都是10位数字,我的手机号码是9。对于regex后面的印度手机号码也适用
    ^[6-9]{9}$
    如果(!/^[6-9]\d{9}$/.test(mobile_no)){//Error code here}
    你能给你的答案添加一些解释吗?虽然这段代码可以回答问题,但解释/支持它总是很好的。
    function validateMobile(mobilenumber) {   
        var regmm='^([0|+[0-9]{1,5})?([7-9][0-9]{9})$';
        var regmob = new RegExp(regmm);
        if(regmob.test(mobilenumber)){
            return true;
        } else {
            return false;
        }    
    }