我正在将页面上的所有文字网址替换为可点击。
当我这样做时,它也会替换'src'属性中的链接
图像(不合需要)
我的正则表达式是这个
[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?
我尝试使用
进行否定搜索(?!src\=\")[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?
但它不符合一件事。
我应该如何在我的正则表达式之前?
答案 0 :(得分:1)
这样的事情怎么样......
(?:(href="))([-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?)(?:([^>]*>[^<]*</a>))
我在开头和结尾添加了非捕获组,以验证它是一个锚点href。我在http://regexpal.com/
上使用此页面的来源对其进行了测试答案 1 :(得分:1)
我不确定这个问题,但我的解释是你想要替换 A 元素中 href 属性的值。
此正则表达式将找到具有href属性的A元素。该值将位于第一个捕获组中。
(?:<a[^>]*?href\s*=\s*")([^"]*)(?:")
这是一个捕获匹配的所有三个部分并使用替换功能的版本
myHtml.replace(/(<a[^>]*?href\s*=\s*")([^"]*)(")/gi, function(match, $1, $2, $3) {
return $1 + "javascript.void(functionName('" + $2 + "'))" + $3;
});
如果myHtml包含以下内容:
<a target="new" title="test" href="http://url.com">
它会转换成这个:
<a target="new" title="test" href="javascript.void(functionName('http://url.com'))">
您还提到了可点击的内容。
myHtml.replace(/(<a[^>]*?)(href\s*=\s*"([^"]*)")/gi, function(match, $1, $2, $3) {
return $1 + "onclick=\"functionName('" + $3 + "')\"";
});
结果:
<a target="new" onclick="functionName('http://url.com')">
顺便说一句,我用自己的正则表达式工具测试了这个:http://rey.gimenez.biz