回答
最好的方法是删除所有非数字,然后将其格式化为您的首选格式。
var raw_number = str.replace(/[^0-9]/g,'');
var regex1 = /^1?([2-9]..)([2-9]..)(....)$/;
if(!regex1.test(raw_number)) {
// is invalid...
} else {
var formatted_number = str.replace(regex1,'1 ($1) $2 $3')
}
这样,如果他们进入234/555-0123
它将成为1 (234) 555 0123
您的首选格式。
这是我发布的更简化的版本,除非我不使用第二个正则表达式。 – 2011-04-30 16:55:12
这是一个我使用(jQuery的)的现场验证的onblur:
http://jsfiddle.net/userdude/Ju72W/
jQuery(document).ready(function($){
$cf = $('#customfield_10117');
$cf.blur(function(e){
phone = $(this).val();
phone = phone.replace(/[^0-9]/g,'');
if (phone.length != 10) {
e.preventDefault();
if (confirm('Phone number must include area code and prefix.')) {
setTimeout(function(){$cf.focus()}, 0);
}
} else {
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
$(this).val('(' + area + ') ' + prefix + '-' + line);
}
});
});
它检查如果提交了10个号码,那么如果这是真的,则重新格式化为(000)000-0000格式。
EDIT
使用相同的技术(具有添加的国家代码限定符)的函数。
http://jsfiddle.net/userdude/Ju72W/1/
jQuery(document).ready(function($){
$cf = $('#customfield_10117');
$cf.blur(function(e){
number = phoneCheckAndFormat(this.value, 11);
if (number === false) {
alert('Entered phone number is not correct.');
return;
}
$(this).val(number);
});
});
function phoneCheckAndFormat(phone, digits) {
phone = phone.replace(/[^0-9]/g,'');
digits = (digits > 0 ? digits : 10);
if (phone.length != digits) {
return false;
} else {
code = '';
if (digits == 11) {
code = '1 ';
phone = phone.substring(1);
}
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
return code + '(' + area + ') ' + prefix + '-' + line;
}
}
使用正则表达式是好的,我想,如果你是conscienciously限制你的功能美构成的电话号码。
但是,只要您的代码需要处理国际关系,该方法不再是最合适的选项。如果你有这样的计划,而且你使用的是JavaScript,我建议你看看Google的libphonenumber。
以下JavaScript REGEX验证123-456-7890或123.456.7890或1234567890或123 456 7890或(123)456-7890
^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$
谢谢,Awais,为更正。 – Billbad 2011-12-18 21:56:53
PhoneFormat.com具有JavaScript库,使真正的格式化和验证数简单。
- 1. 正则表达式验证美国电话号码的格式
- 2. PHP:验证美国电话号码
- 3. 正则表达式美国电话号码验证
- 4. 正则表达式来验证美国电话号码?
- 5. 正在验证美国电话号码w /地区代码
- 6. 验证美国的电话号码存在
- 7. JQuery验证:Regexing非美国电话号码
- 8. 电话号码格式和验证库
- 9. 电话号码格式验证
- 10. 如何验证电话号码格式
- 11. 验证英国电话号码
- 12. 国际电话号码验证与RegEx
- 13. 如何在android中设置美国格式的电话号码?
- 14. 如何将NSString格式化为美国的电话号码?
- 15. 如何自动预先填充美国电话格式验证
- 16. HTML5只允许美国电话号码?
- 17. 英国和美国电话的电话号码正则表达式
- 18. 电话号码验证码
- 19. 写在美国格式隔开的多个电话号码逗号
- 20. 美国电话号码(000)-000-0000或000-000-0000的MVC验证
- 21. Python代码接受许多不同格式的美国电话号码?
- 22. 难以在jQuery中验证美国电话号码 - 需要并需要PhoneUS
- 23. 验证为电话号码
- 24. javascript验证电话号码
- 25. 电话号码验证
- 26. RegEx电话号码验证
- 27. Javascript电话号码验证
- 28. 电话号码验证?
- 29. 电话号码验证
- 30. Javascript电话号码验证
http://stackoverflow.com/questions/1141933/validate-phone-number-existence-for-united-states – 2011-04-30 13:00:04
的重复请指定您认为可接受的数字格式,以及哪些格式不可接受。例如,以下哪一项对您有效:“+1 303 433 1321”,“1-303-343-1341”,“(333)341-1234”,“333.123.1234”,“333-123- 1234“,”3331231234“。 – Phrogz 2011-04-30 13:01:58
您是否熟悉正则表达式?问题[美国电话号码验证](http://stackoverflow.com/q/175488/427545)包含一个很好的问题。 – Lekensteyn 2011-04-30 13:02:49