的JavaScript验证电话号码使用正则表达式

问题描述:

问候overflowers,的JavaScript验证电话号码使用正则表达式

我想写一个正则表达式来验证表单的电话号码##########(10位) 即这是这些情况是有效的:1231231234或1111111111.无效的情况将是小于10位或超过10位数字的字符串。

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

不幸的是,它并没有正确地验证字符串是否11+位数。

有没有人知道一个表达来实现这个任务?

+3

[请](http://*.com/questions/8760070/jquery-phone-number-format)[搜索]( http://*.com/questions/2386054/javascript-phone-number-validation)[问](http://*.com/questions/5286046/javascript-phone-number-validation)[之前] //www.w3resource.com/javascript/form/phone-no-validation.php)。 – sachleen 2013-04-10 23:58:47

您需要使用ancors,即

/^\d{10}$/ 
+0

这工作!谢谢:) – 2013-04-11 00:00:52

您需要锚定的开始和结束也

/^\d{10}$/ 

这10个数字,并没有别的比赛。

+0

感谢您的回复。这工作。 – 2013-04-11 00:01:44

我包括选项使用破折号(XXX-XXX-XXXX)为更好的用户体验(假设这是你的网站):

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

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

+0

更简单的方法是删除破折号(如果你愿意的话可能也会有空格)并使用简单的'/^\ d {10} $ /'表达式。 – RobG 2013-04-11 01:43:12

+0

@RobG我为主要网站做了很多验证,我只是提到了一个事实,即如果用户不能输入破折号,他们会感到沮丧。你提到的正则表达式根本不允许破折号。 – 2013-04-11 02:07:25

+1

- 我建议在测试之前删除破折号和空格,例如're.test(s.replace(/ [\ s - ]/g))',而不是让它们被使用。 – RobG 2013-04-11 03:27:25

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

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'); 
    } 

这为谷歌形式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|$) 

我通常使用

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

为了能够交流以格式12345678,1234-5678,+12345-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}$/) ;