如何使用jQuery格式化电话号码

Xti*_*ian 90 javascript jquery

我目前正在显示电话号码2124771000.但是,我需要以更易于阅读的形式格式化数字,例如:212-477-1000.这是我目前的HTML:

<p class="phone">2124771000</p>
Run Code Online (Sandbox Code Playgroud)

and*_*lrc 213

简单:http://jsfiddle.net/Xxk3F/3/

$('.phone').text(function(i, text) {
    return text.replace(/(\d{3})(\d{3})(\d{4})/, '$1-$2-$3');
});
Run Code Online (Sandbox Code Playgroud)

或者:http://jsfiddle.net/Xxk3F/1/

$('.phone').text(function(i, text) {
    return text.replace(/(\d\d\d)(\d\d\d)(\d\d\d\d)/, '$1-$2-$3');
});
Run Code Online (Sandbox Code Playgroud)

注意:.text()方法不能用于输入元素.对于输入字段文本,请使用.val()方法.

  • 我已将其修改为支持输入字段中的"更改"事件.http://jsfiddle.net/gUsUK/ (4认同)
  • 一个更强大的正则表达式(虽然它需要一个自定义替换函数)将是`/(\ d {3})?(\ d {3})(\ d {4})$ /`如果没有区号 (3认同)

Mar*_*c B 53

var phone = '2124771000',
    formatted = phone.substr(0, 3) + '-' + phone.substr(3, 3) + '-' + phone.substr(6,4)
Run Code Online (Sandbox Code Playgroud)

  • @AndreasAL:因为正则表达式引擎有很大的开销,特别是对于已知输入格式的东西,简单的字符串操作更有效.当然,有一个规则,即使用正则表达式解决问题只会让你遇到两个问题. (7认同)
  • 此解决方案还可以正确格式化带有字母的电话号码,例如"212555IDEA". (4认同)

Tre*_*ost 12

不要忘记确保您使用纯整数.

var separator = '-';
$( ".phone" ).text( function( i, DATA ) {
    DATA
        .replace( /[^\d]/g, '' )
        .replace( /(\d{3})(\d{3})(\d{4})/, '$1' + separator + '$2' + separator + '$3' );
    return DATA;
});
Run Code Online (Sandbox Code Playgroud)


Cru*_*nez 7

以下是其中一些答案的组合.这可以用于输入字段.处理7位和10位长的电话号码.

// Used to format phone number
function phoneFormatter() {
  $('.phone').on('input', function() {
    var number = $(this).val().replace(/[^\d]/g, '')
    if (number.length == 7) {
      number = number.replace(/(\d{3})(\d{4})/, "$1-$2");
    } else if (number.length == 10) {
      number = number.replace(/(\d{3})(\d{3})(\d{4})/, "($1) $2-$3");
    }
    $(this).val(number)
  });
}
Run Code Online (Sandbox Code Playgroud)

实例:JSFiddle

我知道这并没有直接回答这个问题,但是当我查找答案时,这是我发现的第一页.所以这个答案适合任何寻找类似于我所寻找的东西的人.


alo*_*ica 5

使用库来处理电话号码。Google的Libphonenumber是您最好的选择。

// Require `PhoneNumberFormat`.
var PNF = require('google-libphonenumber').PhoneNumberFormat;

// Get an instance of `PhoneNumberUtil`.
var phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance();

// Parse number with country code.
var phoneNumber = phoneUtil.parse('202-456-1414', 'US');

// Print number in the international format.
console.log(phoneUtil.format(phoneNumber, PNF.INTERNATIONAL));
// => +1 202-456-1414
Run Code Online (Sandbox Code Playgroud)

我建议通过seegno 使用此软件包