Я пытаюсь подтвердить свою форму. В моей форме это поле номера телефона. Пользователь вводит номер телефона, и выполняется проверка, а также форматирование. Я читал много других подобных вопросов в StackOverflow и в поисках в других местах, но я застрял. В форме постоянно указывается, что введенный мною номер недействителен.
Меня интересуют только номера NANP, и я понимаю, что номера NANP отформатированы следующим образом: NXX-NXX-XXXX, где N может быть только цифрами [2-9]
, а X может быть [0-9]
. Мне не нужен код страны.
Вот мой код:
function validatePhone(){
var error = 1;
var hasError = false;
var $this = $(this);
var regex1 = /^(\()?[2-9]{1}\d{2}(\))?(-|\s)?[2-9]{1}\d{2}(-|\s)\d{4}$/;
phone = $(this).val();
phone = phone.replace(/[^0-9]/g,'');
if(!regex1.test(phone)){
hasError = true;
$this.css('background-color','#FFEDEF');
}
else{
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
$this.val('(' + area + ') ' + prefix + '-' + line);
$this.css('background-color','#FFFFFF');
}
Идея заключается в том, что независимо от того, вставлю ли я 8012559553, (801) 2559553, (801) 255-9553, 801-255-9553 или что-то подобное, оно будет проверено и отформатировано следующим образом: (801) 255-9553 , Но опять же, форма почему-то продолжает говорить, что любое число, которое я вставляю, является недействительным, независимо от того, является ли оно действительным или нет. Это код, который я использовал, который работал, но не соответствовал форматам NANP:
function validatePhone(){
var error = 1;
var hasError = false;
var $this = $(this);
phone = $(this).val();
phone = phone.replace(/[^0-9]/g,'');
if(phone.length != 10){
hasError = true;
$this.css('background-color','#FFEDEF');
}
else{
area = phone.substring(0,3);
prefix = phone.substring(3,6);
line = phone.substring(6);
$this.val('(' + area + ') ' + prefix + '-' + line);
$this.css('background-color','#FFFFFF');
}
Итак, у меня возникли проблемы с выполнением проверки чисел на регулярное выражение, чтобы убедиться, что числа действительные, а затем правильно отформатировать число ... Есть идеи?