如何用jQuery格式化电话号码

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

 <p class="phone">2124771000</p> 

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

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

或者: 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'); }); 
 var phone = '2124771000', formatted = phone.substr(0, 3) + '-' + phone.substr(3, 3) + '-' + phone.substr(6,4) 

不要忘记确保你正在使用纯粹的整数。

 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; }); 

使用图书馆来处理电话号码。 Google的Libphonenumber是你最好的select。

 // 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 

我build议使用seegno的这个软件包 。

尝试这样的事情..

 jQuery.validator.addMethod("phoneValidate", function(number, element) { number = number.replace(/\s+/g, ""); return this.optional(element) || number.length > 9 && number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/); }, "Please specify a valid phone number"); $("#myform").validate({ rules: { field: { required: true, phoneValidate: true } } }); 

以下是这些答案的组合。 这可以用于input字段。 处理长度为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) }); } 

现场示例: JSFiddle

我知道这并不直接回答这个问题,但是当我查找答案时,这是我发现的第一个页面之一。 所以,这个答案是为了寻找类似于我正在寻找的东西的人。

我提供了jsfiddle链接,可以将美国电话号码格式设置为(XXX)XXX-XXX

  $('.class-name').on('keypress', function(e) { var key = e.charCode || e.keyCode || 0; var phone = $(this); if (phone.val().length === 0) { phone.val(phone.val() + '('); } // Auto-format- do not expose the mask as the user begins to type if (key !== 8 && key !== 9) { if (phone.val().length === 4) { phone.val(phone.val() + ')'); } if (phone.val().length === 5) { phone.val(phone.val() + ' '); } if (phone.val().length === 9) { phone.val(phone.val() + '-'); } if (phone.val().length >= 14) { phone.val(phone.val().slice(0, 13)); } } // Allow numeric (and tab, backspace, delete) keys only return (key == 8 || key == 9 || key == 46 || (key >= 48 && key <= 57) || (key >= 96 && key <= 105)); }) .on('focus', function() { phone = $(this); if (phone.val().length === 0) { phone.val('('); } else { var val = phone.val(); phone.val('').val(val); // Ensure cursor remains at the end } }) .on('blur', function() { $phone = $(this); if ($phone.val() === '(') { $phone.val(''); } }); 

现场示例: JSFiddle

考虑libphonenumber-js( https://github.com/halt-hammerzeit/libphonenumber-js )这是一个完整的和着名的libphonenumber的较小版本。

快速和肮脏的例子:

 $(".phone-format").keyup(function() { // Don't reformat backspace/delete so correcting mistakes is easier if (event.keyCode != 46 && event.keyCode != 8) { var val_old = $(this).val(); var newString = new libphonenumber.asYouType('US').input(val_old); $(this).focus().val('').val(newString); } }); 

(如果您使用正则expression式来避免库下载,请避免重新格式化退格/删除将更容易纠正错别字。)

可能会有所帮助

 var countryCode = +91; var phone=1234567890; phone=phone.split('').reverse().join('');//0987654321 var formatPhone=phone.substring(0,4)+'-';//0987- phone=phone.replace(phone.substring(0,4),'');//654321 while(phone.length>0){ formatPhone=formatPhone+phone.substring(0,3)+'-'; phone=phone.replace(phone.substring(0,3),''); } formatPhone=countryCode+formatPhone.split('').reverse().join(''); 

你会得到+ 91-123-456-7890