javascript - 条件括号子字符串与替换匹配

标签 javascript regex

正在开发正则表达式电话号码格式解决方案,我希望包括用户输入分机号的可能性。

例如,如果用户输入类似于 +121255512341212 的内容,则其输入将通过以下格式格式化为 +1 (212) 555-1234 ext 1212

但是,如果用户输入不带分机号的号码(例如 +12125551234),输出仍包含 ext

var reg = /(\+?\d{1})?\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})?\W*\s*(\d+)?/g; 
var substr = '$1 ($2) $3-$4 ext $5'; 

'+121255512341212'.replace(reg, substr); // '+1 (212) 555-1234 ext 1212'
'+12125551234'.replace(reg, substr); // '+1 (212) 555-1234 ext'

抛开上述代码片段中的现有问题......有没有办法可以在 substr 中构建条件,以便仅在 时输出 ext $5 有实际内容吗?

或者我是否以错误的方式处理这个问题......?

最佳答案

一个额外的替换就可以解决问题:

.replace(reg, substr).replace(/ ext $/, "");

关于javascript - 条件括号子字符串与替换匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30088691/

相关文章:

javascript - ajax调用时如何返回值?

javascript - 如何使用 Web Audio API (WAAPI) 获取音频样本数据

javascript - 如何将类似日期的字符串(例如 "2014-08-18T03:29:12.000Z")转换为秒?

python - 使用 python 从源文件中剥离 C/C++ 注释

regex - html 的 Vim 正则表达式

regex - 要作为正则表达式传递的转义字符串

javascript - 我可以将 document.getElementById 分配给 javascript 中的变量吗

javascript - 更改组文本字段的背景颜色

java - 正则表达式匹配额外文本

正则表达式 - 链接格式