使用JavaScript屏蔽美国电话号码字符串

Paw*_*wan 23 javascript regex mask phone-number

我需要美国电话号码格式的常规快递.我想用JavaScript替换电话号码字符串到美国电话号码字符串格式.

var number = "4031234789";
Run Code Online (Sandbox Code Playgroud)

我想以下面的格式掩盖它: -

number = number.mask('(000) 000-0000');
Run Code Online (Sandbox Code Playgroud)

任何人都可以在JavaScript中向我展示正则表达式吗?

Jos*_*ier 83

这个答案假定您需要以下格式:( (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];
});
Run Code Online (Sandbox Code Playgroud)
<p>Masked on the blur event (remove focus).</p>
<input type="text" id="phone" placeholder="(555) 555-5555"/>
Run Code Online (Sandbox Code Playgroud)


或者,如果您希望键入时屏蔽该数字,可以侦听该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] : '');
});
Run Code Online (Sandbox Code Playgroud)
<input type="text" id="phone" placeholder="(555) 555-5555"/>
Run Code Online (Sandbox Code Playgroud)

  • 这很好用!我能够轻松地对其进行调整以掩盖外国邮政编码。 (3认同)
  • 正是在寻找这种简单的功能。大多数都是臃肿的,效果不佳。哇! (3认同)

小智 5

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

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


Dee*_*epu -2

为此,请使用电话号码屏蔽插件。

检查以下插件:

  • 该问题询问如何在 javascript 中屏蔽美国电话号码,而不是哪些库已经做到了这一点。 (2认同)