首页 > 解决方案 > 格式化电话号码,包括 html 标签

问题描述

我收到一个电话号码,其中包含<strong> </strong>HTML 标签。我想将该电话号码格式化为这种格式,(xxx) xxx-xxxx包括 HTML 标记。

例如

"7096<strong>95</strong>8048" 

进入:

(709) 6<strong>95-</strong>8048

标签: javascriptregex

解决方案


还有其他特殊情况吗?

var x, r;
x = "7096<strong>95</strong>8048";
r = x.replace(
  /(^\d.*?\d.*?\d)|(<strong>)(.*?)(<\/strong>)/ig,
  function (m, p1,p2,p3,p4) {
    if (p1) return `(${p1}) `;
  else return p2+p3+"-"+p4;
  }
)
console.log(r);

在上面的代码中,不管用户输入什么,用户也可以输入其他的数字。例子

x = "9he3983<STrong>hello367</sTrong>478";

将会

"(9he39) 83<STrong>hello368-</sTrong>478"

如果不允许非数字。在第 1 组中,删除.*?; 在第 3 组中,替换.*?\d+.

编辑:

当我在线尝试正则表达式时,那是无法使用的功能。我对此有替代品。

var x, r;
x = "7096<strong>95</strong>8048";
r = x.replace(
  /(^\d.*?\d.*?\d)(.*?)(<strong>)(.*?)(<\/strong>)/ig,
  "($1) $2$3$4-$5"
)
console.log(r);

推荐阅读