拆分并在电话号码之间添加空格

时间:2014-08-04 15:03:20

标签: javascript jquery

我正在尝试将电话号码格式化为更简洁的格式,从前面添加第三个和第七个字符之间的空格。

var string = "02076861111"
var phone = [string.slice(0, 3), " ", string.slice(3)].join('');
console.log(phone);

// returns 020 76861111

我在哪里放置第七个字符的方法,以便返回020 7686 1111

感谢任何帮助。提前谢谢!

5 个答案:

答案 0 :(得分:7)

单次替换:

var string = "02076861111"
var phone = string.replace(/(\d{3})(\d{4})(\d{4})/, '$1 $2 $3');
console.log(phone);

当然,假设你总是有一个完美的字符串(没有空格,连字符或其他字符,10个字符......)

更严格的正则表达式可能是这样的:

var phone = string.replace(/\D*(\d{3})\D*(\d{4})\D*(\d{4})\D*/, '$1 $2 $3');

但是,这仍然无法抓住每一种可能性。

答案 1 :(得分:2)

再次切片:

var phone = [string.slice(0, 3), " ", string.slice(3,7), " ", string.slice(7)].join('');

Slice采用开始和(独占)结束索引。请注意,如果缺少结束索引,它将接受字符串的其余部分。

因此第一个切片采用索引0到2,第二个采用索引3到6,最后一个切片采用索引7到字符串的结尾。

答案 2 :(得分:1)

为什么在正则表达式可以使用时使用切片

"02076861111".replace(/(\d{3})\D?(\d{4})\D?(\d{4})/,"$1 $2 $3");

如果用户进入空间开始,这将不会爆炸。

答案 3 :(得分:0)

"02076861111".replace(/^\d{3}-\d{8}$/);

输出:020-76861111

答案 4 :(得分:0)

替代解决方案:

function numberWithSpaces(value, pattern) {
  var i = 0,
    phone = value.toString();
  return pattern.replace(/#/g, _ => phone[i++]);
}

console.log(numberWithSpaces('02076861111', '### #### ####'));