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

新手上路,请多包涵

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

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

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

任何帮助表示赞赏。提前致谢!

原文由 realph 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 677
2 个回答

在单个替换中:

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

但是,这仍然无法捕捉到所有可能性。

原文由 Karl-André Gagnon 发布,翻译遵循 CC BY-SA 3.0 许可协议

替代解决方案:

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

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

原文由 Penny Liu 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题