3

问候溢出者,

我正在尝试编写一个正则表达式来验证格式为##########(10 位数字)的电话号码,即这些是有效的情况:1231231234 或 1111111111。无效的情况是字符串少于 10 位或多于 10 位的数字。

到目前为止我的表达式是这样的:“\d{10}”

不幸的是,它不能正确验证字符串是否超过 11 位。

有谁知道完成这项任务的表达式?

4

6 回答 6

8

你需要使用ancors,即

/^\d{10}$/
于 2013-04-10T23:58:43.530 回答
4

你也需要锚定开始和结束

/^\d{10}$/

这匹配 10 位数字,仅此而已。

于 2013-04-10T23:58:32.057 回答
3

此表达式适用于谷歌表格 10 位电话号码,如下所示:

(123) 123 1234 或 123-123-1234 或 123123124

(\W|^)[(]{0,1}\d{3}[)]{0,1}[\s-]{0,1}\d{3}[\s-]{0,1}\d{4}(\W|$)
于 2013-12-01T18:33:55.940 回答
2

我包括使用破折号(xxx-xxx-xxxx)的选项以获得更好的用户体验(假设这是您的网站):

var regex = /^\d{3}-?\d{3}-?\d{4}$/g
window.alert(regex.test('1234567890'));

http://jsfiddle.net/bh4ux/279/

于 2013-04-10T23:59:44.503 回答
1

我通常使用

phone_number.match(/^[\(\)\s\-\+\d]{10,17}$/)

为了能够接受 12345678、1234-5678、+12 345-678-93 或 (61) 8383-3939 格式的电话号码,世界各地的人们输入电话号码并没有真正的约定。因此,如果您不必验证每个国家/地区的电话号码,这应该主要工作。17 的限制是为了阻止人们输入两个许多无用的连字符和字符。

除此之外,您可以删除所有空格、连字符和加号并计算字符以确保它是 10 或更多。

var pureNumber = phone_number.replace(/\D/g, "");

一个完整的解决方案是两者的结合

var pureNumber = phone_number.replace(/\D/g, "");
var isValid = pureNumber.length >= 10 && phone_number.match(/^[\(\)\s\-\+\d]{10,17}$/)  ;
于 2014-05-23T18:37:09.137 回答
0

或者这个(这将从字符串中删除非数字字符)

var phoneNumber = "(07) 1234-5678";
phoneNumber = phoneNumber.replace(/\D/g,'');
if (phoneNumber.length == 10) {
    alert(phoneNumber + ' contains 10 digits');
    }
else {
    alert(phoneNumber + ' does not contain 10 digits');
    }
于 2013-09-20T05:23:41.987 回答