验证美国电话号码格式

3

我想验证电话和传真号码字段。我想将它们作为美国格式提供的电话号码和传真号码进行验证。我已经搜索过,但没有成功。有人可以帮助我如何按照以下格式进行验证吗?

编辑 1 (415) xxx xxxx


请验证美国电话号码的存在性。此问题已有重复:http://stackoverflow.com/questions/1141933/validate-phone-number-existence-for-united-states - John Hoven
请指定您认为哪些数字格式是可接受的,哪些格式不可接受。例如,以下哪些对您有效:"+1 303 433 1321","1-303-343-1341","(333) 341-1234","333.123.1234","333-123-1234","3331231234"。 - Phrogz
你熟悉正则表达式吗?美国电话号码验证这个问题包含了一个好的例子。 - Lekensteyn
@Phrogz 我需要以这种格式 1 (415) xxx xxxx - Awais Qarni
不是重复问题;这个问题含糊地询问美国电话号码。建议的重复问题是关于美国电话号码的。 “美洲”指的是由三个大陆组成的一个地区,而不是一个国家。 :) - Lightness Races in Orbit
显示剩余2条评论
5个回答

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


这是我发布的更简化版本,但我没有使用第二个正则表达式。 - Jared Farrish

2

如果你仅考虑美国电话号码,那么使用正则表达式是可以的。

但是,一旦你的代码需要处理国际电话号码,这种方法就不再是最合适的选项。如果你有这样的计划,并且由于你正在使用JavaScript,我建议你查看谷歌的libphonenumber


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}$

1

这是我使用的一个(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

PhoneFormat.com有一个JavaScript库,可以轻松地格式化和验证数字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接