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

时间:2015-04-04 06:29:41

标签: javascript regex

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

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

2 个答案:

答案 0 :(得分:0)

您可以使用此更新功能使用^(?=[0-9]{11})([0-9]{5})([0-9]{8})([0-9])$ regex

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

替换字符串 - "$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"/>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

  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