使用正则表达式电话号码格式化解决方案,我希望包含用户输入扩展程序的可能性。
例如,如果用户输入与+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
具有实际内容时输出?
或者我是以错误的方式解决这个问题......?
答案 0 :(得分:2)
另外一个替代品可以解决问题:
.replace(reg, substr).replace(/ ext $/, "");