動作するように正規表現を修正してもらえますか? 置き換えたい文字列が a タグで囲まれていないかどうかを確認する必要があります。
var re = new RegExp("<a\b[^>]*>"+variable+"<\/a>","gi");
動作するように正規表現を修正してもらえますか? 置き換えたい文字列が 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」終了タグの一部ではないすべてを意味します<
<
(?: # 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
バックスラッシュを 2 倍にする必要がある\\b
ため、次のような正規表現になり\b
ます。
var re = new RegExp("<a\\b[^>]*>"+variable+"<\/a>","gi");