验证美国格式的电话号码

时间:2011-04-30 12:58:00

标签: javascript validation

我想验证电话和传真号码字段。我想验证它们的电话号码和传真是以美国格式提供的。我搜索但没有成功。任何人都可以帮助我如何以下列格式进行验证

Edit 1 (415) xxx xxxx

5 个答案:

答案 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库,可以很容易地格式化和验证数字。