【问题标题】:Mask US phone number string with JavaScript用 JavaScript 屏蔽美国电话号码字符串
【发布时间】:2013-07-13 03:19:24
【问题描述】:

我需要美国电话号码格式的常规快递。我想用 JavaScript 将电话号码字符串替换为以下美国电话号码字符串格式。

var number = "4031234789";

我想用以下格式屏蔽它:-

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

谁能给我看一个 JavaScript 中的正则表达式吗?

【问题讨论】:

标签: javascript regex mask phone-number


【解决方案1】:

此答案假定您需要以下格式:(000) 000-0000(如 OP 所述)。

有多种不同的实现方式,但这里有几种不同的方法:


如果您想简单地屏蔽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] : '');
});
&lt;input type="text" id="phone" placeholder="(555) 555-5555"/&gt;

【讨论】:

  • 这很好用!我能够轻松地调整它以掩盖外国邮政编码。
  • 正在寻找这种简单的功能。大多数都臃肿而且效果不佳。哇!
  • 在 IE11 的兼容模式下无法使用 :( 但在关闭兼容模式时效果很好
【解决方案2】:

您可以使用正则表达式,然后连接以形成您的字符串。

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

【讨论】:

    【解决方案3】:

    对于那些想在JS中发布乌兹别克斯坦数量的人

      document.getElementById('organization_phone').addEventListener('input', function (e) {
        var x = e.target.value.replace(/\D/g, '').match(/(\d{0,3})(\d{0,2})(\d{0,3})(\d{0,2})(\d{0,2})/);
        e.target.value = '+(' + x[1] + ') ' + x[2] + '-' + x[3] + '-' + x[4] + '-' + x[5];
      });
     &lt;input type="text" id="organization_phone" name="organization_phone"  required placeholder="(+998) 99-000-00-00" value="+998"&gt;

    【讨论】:

      【解决方案4】:

            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]
            });
      &lt;input type="text" id="organization_phone" name="organization_phone"  required placeholder="(998) 000-0000"&gt;

      【讨论】:

        【解决方案5】:

        你可以使用我的包https://github.com/jsonmaur/coverup,它可以对输入字符串进行onblur屏蔽并保持字符串中的符号。

        【讨论】:

          【解决方案6】:

          【讨论】:

          • 这个问题是关于如何在 javascript 中屏蔽美国电话号码,而不是有哪些图书馆已经这样做了。
          猜你喜欢
          • 2021-01-10
          • 1970-01-01
          • 2016-11-07
          • 2011-05-22
          • 1970-01-01
          • 1970-01-01
          • 2018-05-04
          • 2012-05-22
          • 2010-09-15
          相关资源
          最近更新 更多