使用正则表达式javascript进行手机号码验证

时间:2013-04-24 09:45:36

标签: javascript regex

我想要格式化的手机号码 +91(或任何其他国家代码)-9999999999(10位数手机号码)。

我已经尝试了/^\+[0-9]{2,3}+[0-9]\d{10},但它不起作用请帮助

提前致谢

6 个答案:

答案 0 :(得分:6)

简而言之:

// should return an array with a single match representing the phone number in arr[0]
var arr = '+49-1234567890'.match(/^\+\d{1,3}-\d{9,10}$/); 
// should return null
var nullVal = 'invalid entry'.match(/^\+\d{1,3}-\d{9,10}$/); 

更长的解释:

  • /启动正则表达式
  • ^尝试从头开始匹配
  • \+匹配+号
  • \d{1,3}匹配数字1至3次
  • -匹配破折号
  • \d{9,10}匹配9或10位数字
  • $强制匹配仅在字符串终止时才能应用
  • /完成正则表达式

了解正则表达式的作用,可以让您根据自己的需要进行修改

有时候忽略你遇到的任何空白是件好事。 \s*匹配0或n个空格。因此,为了更加宽容,您可以让用户输入类似' + 49 - 1232345 '

的内容

与此匹配的正则表达式为/^\s*\+\s*\d{1,3}\s*-\s*\d{9, 10}\s*$/(仅使用\s*填充可能的空间位置)

除此之外:我热烈推荐掌握正则表达式,因为它们在很多情况下都非常方便。

答案 1 :(得分:2)

如果您期望数字中的短划线(您的格式显示),您的正则表达式中没有任何内容可以匹配它:正则表达式中的第二个加号意味着冲刺?

^\+[0-9]{2,3}-[0-9]\d{10}

另请注意:

  1. 某些国家代码是单个数字(例如,1表示北美,7表示俄罗斯),这些代码不匹配
  2. 我怀疑所有手机的本地部分始终是10位数(例如,随着移动所有权的增长,在人口众多的国家,它已经足够了)

答案 2 :(得分:1)

\+[0-9]{2,3}-[0-9]+

试试这个。这匹配开头的+,国家/地区代码的两到三个数字,后跟-后跟任意数量的数字

答案 3 :(得分:1)

使用遮罩功能

jQuery(function($){
  $("#phone").mask("999-999-9999",{placeholder:" "});   
});

看这里http://office.microsoft.com/en-in/access-help/control-data-entry-formats-with-input-masks-HA010096452.aspx

答案 4 :(得分:1)

您可以简单地写下以下内容:

var pattern=/^(0|[+91]{3})?[7-9][0-9]{9}$/;

答案 5 :(得分:0)

对于移动验证,请尝试使用

<html>
<head>
<title>Mobile number validation using regex</title>
<script type="text/javascript">
    function validate() {
        var mobile = document.getElementById("mobile").value;
        var pattern = /^[7-9][0-9]{9}$/;
        if (pattern.test(mobile)) {
            alert("Your mobile number : "+mobile);
            return true;
        }
        alert("It is not valid mobile number");
        return false;

    }
</script>

</head>
<body>
Enter Mobile No. :
<input type="text" name="mobile" id="mobile" />
<input type="submit" value="Check" onclick="validate();" />
</body>
</html>