验证10位数的电话号码

时间:2009-12-26 21:18:17

标签: regex

我正在寻找一个简单的正则表达式来验证一个10位数的电话号码。我想确保这个数字正好是10位数字,没有字母,连字符或parens,前两位数字不是以0或1开头。有人可以帮忙吗?

5 个答案:

答案 0 :(得分:25)

/ [2-9] {2} \ d {8} /

答案 1 :(得分:8)

^[2-9]{2}[0-9]{8}$

我认为[0-9]比\ d更好阅读,特别是考虑到前面的[2-9]

^和$确保输入字符串仅由这8个字符组成 - 否则不能保证输入字符串不大 - 即“12345678901”会匹配那两个字符的正则表达式 - 尽管它是11个字符,以1开始!

答案 2 :(得分:3)

正如Randal指出的那样,这个问题与北美电话号码的格式不一致(即使OP声明“前两位数字不是以0或1开头”)。对北美电话号码更好的正则表达方式是:

  

^ [2-9] {1} [0-9] {9} $

例如,华盛顿特区的区号是(202)。纽约市有区号(212)。新泽西州北部有(201)。

但更确切地说,NANP有很多规则,因为它与区域代码和交换(前六位)中允许的内容相关。这个正则表达式仍应涵盖大多数情况。 https://en.wikipedia.org/wiki/North_American_Numbering_Plan

答案 3 :(得分:1)

这个正则表达式脚本可能有所帮助。我基本上删除任何“标点符号”字符,包括前导1-,然后验证它是10位数。

您可能不需要的额外部分是格式为000-000-0000

formatPhone = function() {
 var phone = this.value;
 phone = phone.replace(/^1(|-|\(|\)|\.| )*|-|\(|\)|\.| /g, '');
 if(phone.length === 10) {
   this.value = phone.slice(0,3) + '-' + phone.slice(3,6) + '-' + phone.slice(6,10);
 }
}

答案 4 :(得分:0)

电话号码为10位数,将从7,8和9开始

[正则表达式(" ^([07] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] | 8 [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0- 9] [0-9] | 9 [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [ 0-9])$",ErrorMessage ="输入有效的手机号码")]

参考: http://www.regular-expressions.info/numericranges.html