您能否更正我的 RegExp 以使其正常工作?我需要检查我要替换的字符串是否没有被 a 标签包围。
var re = new RegExp("<a\b[^>]*>"+variable+"<\/a>","gi");
您能否更正我的 RegExp 以使其正常工作?我需要检查我要替换的字符串是否没有被 a 标签包围。
var re = new RegExp("<a\b[^>]*>"+variable+"<\/a>","gi");
您必须先捕获所有链接并自行替换它们:
var variable = "os";
var yourstring= "sdfsdlkjfsd <a href=blux> os</a> sdfsdflkjsdf os";
var re = new RegExp("(<a\\b[^>]*>(?:[^<]+|<(?!/a>))*</a>)|("+variable+")","gi");
function replacer(match, p1, p2){
var replacement = "glups";
return (p1)? p1 : replacement;
};
var result = yourstring.replace(re, replacer);
console.log(result);
图案细节:
(?:[^<]+|<(?!/a>))*
描述“a”标签之间的内容,并表示所有不是 a<
或 a<
不是结束“a”标签的一部分的内容
(?: # open a non capturing group
[^<]+ # all characters except < one or more times
| # OR
<(?!/a>) # < not followed by "/a>"
)* # close the non capturing group and repeat zero or more times
您需要将反斜杠加倍,\\b
以便将其转换为正则表达式\b
:
var re = new RegExp("<a\\b[^>]*>"+variable+"<\/a>","gi");