【发布时间】:2017-02-19 18:11:40
【问题描述】:
我正在寻找一种方法来重新格式化电话号码以在 Javascript 中显示。以下是部分数据的示例:
00-22 345 991
555922134
12450-123948
我想将数字重新格式化为以下 3 种长度格式,例如:555-922-134
假设可以忽略破折号和空格,最后两个块的长度可以为 2,例如:002-234-59-91 或 124-501-349-48
【问题讨论】:
标签: javascript
我正在寻找一种方法来重新格式化电话号码以在 Javascript 中显示。以下是部分数据的示例:
00-22 345 991
555922134
12450-123948
我想将数字重新格式化为以下 3 种长度格式,例如:555-922-134
假设可以忽略破折号和空格,最后两个块的长度可以为 2,例如:002-234-59-91 或 124-501-349-48
【问题讨论】:
标签: javascript
您可以使用带有前瞻的正则表达式。
Positive Lookahead 查找等号后的模式,但不包括在匹配中。
x(?=y)
仅当 'x' 后跟 'y' 时才匹配 'x'。这称为前瞻。
例如,
/Jack(?=Sprat)/仅在其后跟“Sprat”时才匹配“Jack”。/Jack(?=Sprat|Frost)/仅在 'Sprat' 或 'Frost' 后跟 'Jack' 匹配。但是,“Sprat”和“Frost”都不是匹配结果的一部分。
function format(s) {
return s.toString().replace(/\D/g, '').replace(/\d{2,3}(?=..)/g, '$&-');
}
console.log(format('00-22 345 991'));
console.log(format('555922134'));
console.log(format('12450-123948'));
console.log(format(123456789));
console.log(format(12345678901));
console.log(format(1234567));
【讨论】:
【讨论】: