我想验证电话和传真号码字段。我想验证它们的电话号码和传真是以美国格式提供的。我搜索但没有成功。任何人都可以帮助我如何以下列格式进行验证
Edit
1 (415) xxx xxxx
答案 0 :(得分:7)
最好的方法是删除所有非数字,然后自行将其格式化为您的首选格式。
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
的首选格式。
答案 1 :(得分:2)
如果你明确地将你的功能限制在美国形成的电话号码,那么使用正则表达式是可以的。
但是,只要您的代码必须处理国际,该方法就不再是最合适的选择。如果您有任何类型的此类计划,并且由于您使用的是JavaScript,我建议您查看Google的libphonenumber。
答案 2 :(得分:2)
以下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}$
答案 3 :(得分:1)
这是我使用(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格式。
修改强>
使用相同技术的函数(添加了国家/地区代码限定符)。
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;
}
}
答案 4 :(得分:1)
PhoneFormat.com有一个javascript库,可以很容易地格式化和验证数字。