проверить американский формат номера телефона - PullRequest
3 голосов
/ 30 апреля 2011

Я хочу проверить поля номера телефона и факса. Я хочу подтвердить их, так как номера телефонов и факсов указаны в американском формате. Я искал, но не удалось. Любой может помочь, как я могу проверить в следующем формате

Edit 1 (415) xxx xxxx

Ответы [ 5 ]

7 голосов
/ 30 апреля 2011

Лучший способ - удалить все нецифровые символы и затем отформатировать их в предпочитаемый вами формат.

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.

2 голосов
/ 02 сентября 2011

Следующий 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}$
2 голосов
/ 30 апреля 2011

Использование регулярных выражений - это нормально, я полагаю, если вы сознательно ограничиваете свою функцию телефонными номерами в США.

Однако, как только ваш код имеет дело с международным языком, этот метод больше не является наиболее подходящим вариантом. Если у вас есть какие-либо планы такого рода, и поскольку вы используете JavaScript, я предлагаю вам взглянуть на libphonenumber от Google .

1 голос
/ 20 апреля 2012

PhoneFormat.com имеет библиотеку javascript, которая упрощает форматирование и проверку чисел.

1 голос
/ 30 апреля 2011

Вот один из них, который я использую (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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...