嘿所以我有以下脚本有效:
它查找字符串Phone: (##) ### ####
$(function(){
var regex = /(^|\W)Phone:($|\W)\(?([0-9]{2})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/g;
var target = $('[data-hook="phone-number"]');
var string = target.html();
string = string.replace(regex, "><a href=\"tel:$3$5$6\">Phone: ($3) $5 $6</a>");
target.html(string);
});
但是你可能会注意到它非常粗糙(正则表达式不是我的强项)我想知道有没有办法忽略空组($1
,$2
,$4
)在这种情况下。
所以我可以在理想世界中使用$1
,$2
,$3
。
此外,我无法弄清楚如何阻止(^|\W)
忽略>
符号,因此为什么在我的replace
中有一个尾随>
是否有办法告诉正则表达式转移/删除一个号码?
答案 0 :(得分:3)
我认为您正在寻找创建非捕获组的(?:)
:
/(?:^|\W)Phone:(?:$|\W)\(?(?:[0-9]{2})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/g
正如Alan Moore所说,你也可以稍微缩短一下:
/\bPhone:\s*\(?(?:[0-9]{2})\)?([ .-]?)([0-9]{3})\2([0-9]{4})/g