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 :(得分: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;
答案 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