我正在寻找一个简单的正则表达式来验证一个10位数的电话号码。我想确保这个数字正好是10位数字,没有字母,连字符或parens,前两位数字不是以0或1开头。有人可以帮忙吗?
答案 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 ="输入有效的手机号码")]