正则表达式,用于在 JavaScript 中为电话号码添加短划线

Regular Expression to add dashes to a phone number in JavaScript

本文关键字:添加 电话号码 用于 JavaScript 正则表达式      更新时间:2023-09-26
function convertToValidPhoneNumber(text) {  
    var result = [];     
    text = text.replace(/^'d{2}-?'d{3}-?'d{3}-?'d{3}$/, "");
    while (text.length >= 6){       
        result.push(text.substring(0, 3));  
        text = text.substring(3);
    }
    if (text.length > 0) result.push(text); 
    return result.join("-");
}

我针对输入字符串测试35200123456785函数。

它给了我像352-001-234-56785这样的数字,但我想要35200-12345678-5.

我需要做什么来解决这个问题?

您可以使用

这个使用正则表达式^(?=[0-9]{11})([0-9]{5})([0-9]{8})([0-9])$更新函数:

  • ^ - 字符串开始
  • (?=[0-9]{11}) - 确保电话号码中有 11 位数字
  • ([0-9]{5}) - 第一组捕获 5 位数字
  • ([0-9]{8}) - 第二组捕获 8 位数字
  • ([0-9]) - 第三组捕获 1 位数字
  • $ - 字符串结束

替换字符串 - "$1-$2-$3" - 使用对正则表达式中按数字捕获组的反向引用,并在您需要的位置添加连字符。

如果输入字符串中有连字符,则应在之前删除它们。

function convertToValidPhoneNumber(text) {  
    return text = text.replace(/-/g,"").replace(/^(?=[0-9]{11})([0-9]{5})([0-9]{8})([0-9])$/, "$1-$2-$3");
}
document.getElementById("res").innerHTML = convertToValidPhoneNumber("35200123456785") + " and " + convertToValidPhoneNumber("35-200-123-456-785");
<div id="res"/>

  number = this.state.number;
  var expression = /('D+)/g;
  var npa = "";
  var nxx = "";
  var last4 = "";
  number = number.toString().replace(expression, "");
  npa = number.substr(0, 3);
  nxx = number.substr(3, 3);
  last4 = number.substr(6, 4);
  number = npa + "-" + nxx + "-" + last4