我想验证电话和传真号码字段。我想将它们作为美国格式提供的电话号码和传真号码进行验证。我已经搜索过,但没有成功。有人可以帮助我如何按照以下格式进行验证吗?
编辑
1 (415) xxx xxxx
我想验证电话和传真号码字段。我想将它们作为美国格式提供的电话号码和传真号码进行验证。我已经搜索过,但没有成功。有人可以帮助我如何按照以下格式进行验证吗?
编辑
1 (415) xxx xxxx
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
。
如果你仅考虑美国电话号码,那么使用正则表达式是可以的。
但是,一旦你的代码需要处理国际电话号码,这种方法就不再是最合适的选项。如果你有这样的计划,并且由于你正在使用JavaScript,我建议你查看谷歌的libphonenumber。
^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$
这是我使用的一个(jQuery)用于字段失去焦点时验证的代码:
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;
}
}
1 (415) xxx xxxx
。 - Awais Qarni