正在开发正则表达式电话号码格式解决方案,我希望包括用户输入分机号的可能性。
例如,如果用户输入类似于 +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/