0

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

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

提前致谢

4

6 回答 6

7

简而言之,解决方案:

// 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*

除此之外:我强烈建议掌握正则表达式,因为它们在许多情况下都非常方便。

于 2013-04-24T09:53:35.183 回答
2

如果您希望数字中出现破折号(您的格式显示),那么您的正则表达式中没有任何内容可以匹配它:正则表达式中的第二个加号是否意味着破折号?

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

另请注意:

  1. 某些国家/地区代码是单个数字(例如,1 代表北美,7 代表俄罗斯),这些将不匹配
  2. 我怀疑所有手机的本地部分总是 10 位数(例如,随着手机拥有量的增长,这在人口众多的国家是不够的)
于 2013-04-24T09:50:45.600 回答
2

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

var pattern=/^(0|[+91]{3})?[7-9][0-9]{9}$/;
于 2017-11-13T09:03:59.203 回答
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

于 2013-06-24T06:10:51.810 回答
1

对于移动验证,请尝试此

<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>
于 2014-06-03T09:27:08.250 回答
1
\+[0-9]{2,3}-[0-9]+

尝试这个。这匹配+开头的a,国家代码的两个或三个数字,后跟a,-后跟任意数量的数字

于 2013-04-24T09:51:26.607 回答