Маскировать номер телефона в США с помощью JavaScript

Мне нужен регулярный экспресс для формата номера телефона США. Я хочу заменить строку номера телефона на формат строки номера телефона США ниже в JavaScript.

var number = "4031234789";

И я хочу замаскировать его в следующем формате:-

number = number.mask('(000) 000-0000');

Может кто-нибудь показать мне регулярное выражение для этого в JavaScript?

9 ответов

Этот ответ предполагает, что вы хотите следующий формат: (000) 000-0000 (как утверждает ОП).

Есть несколько разных способов реализовать это, но вот пара разных подходов:


Если вы хотите просто замаскировать номер на blur событие (когда поле проигрывает focus), то вы можете использовать следующее:

document.getElementById('phone').addEventListener('blur', function (e) {
  var x = e.target.value.replace(/\D/g, '').match(/(\d{3})(\d{3})(\d{4})/);
  e.target.value = '(' + x[1] + ') ' + x[2] + '-' + x[3];
});
<p>Masked on the blur event (remove focus).</p>
<input type="text" id="phone" placeholder="(555) 555-5555"/>


В качестве альтернативы, если вы предпочитаете маскировать число при наборе текста, вы можете прослушать input событие, а затем условно замаскировать число на основе соответствия регулярному выражению:

document.getElementById('phone').addEventListener('input', function (e) {
  var x = e.target.value.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/);
  e.target.value = !x[2] ? x[1] : '(' + x[1] + ') ' + x[2] + (x[3] ? '-' + x[3] : '');
});
<input type="text" id="phone" placeholder="(555) 555-5555"/>

Вы можете использовать регулярное выражение и затем объединить, чтобы сформировать вашу строку.

var USNumber = "4031234789".match(/(\d{3})(\d{3})(\d{4})/);<br/>
USNumber = "(" + USNumber[1] + ") " + USNumber[2] + "-" + USNumber[3];

Для тех, кто хочет опубликовать номер Узбекистана в JS

Номер США в JS

      document.getElementById('organization_phone').addEventListener('input', function (e) {
  var x = e.target.value.replace(/\D/g, '').match(/(\d{0,3})(\d{0,3})(\d{0,4})/);
  e.target.value = '(' +x[1] + ') '+ x[2] + '-' + x[3]
});

html:

      <input type="text" id="organization_phone" name="organization_phone"  required placeholder="(998) 000-0000">

Есть мое решение

Согласно Википедии, максимальная длина номера телефона составляет 15 цифр.

Код ниже реализует маску+00 (000) 000-00-00-000

Кроме того, backspace также работает

Я думал, что отредактировал несколько вещей, чтобы они соответствовали формату 555-555-5555, но я получаю ошибку javascript для x[1]. В нем говорится, что Uncaught TypeError: Не удается прочитать свойства null (чтение «1»). Код все еще работает, но, будучи пользователем JS ниже среднего, я все еще учусь, и мне очень хотелось бы попытаться понять, что здесь происходит. Спасибо!

       document.getElementById('Main_Phone').addEventListener('input', 
 function (e) 
 {
 var x = e.target.value.replace(/\D/g, '').match(/^(\d{3})(\d{3}). 
 (\d{4})$/);
 e.target.value = (x[1] + '-' + x[2] + '-' + x[3]);     
 });

Вы можете использовать мой пакет https://github.com/jsonmaur/coverup, который может маскировать входную строку onblur и поддерживать символы в строке.

Используйте для этого плагины для маскировки телефонных номеров.

Проверьте следующие плагины:

Другие вопросы по тегам