"someString"(複雑な正規表現で定義されている)のすべてのインスタンスを<a href="http://domain.com/$1">$1</a>
に置き換えるブラウザプラグインで作業しています。これは一般的に体のinnerHTMLのグローバル置換を行うだけでOKです。しかし、<script>
タグ内の "someString"(つまり、JS変数または他のJS参照)を見つけ(そして置き換えて)ページを分割します。また、 "someString"が既にアンカーの一部である場合、それは中断されます。<script>または<a>タグ
基本的に、<script></script>
または<a></a>
タグセット内に収まらない限り、「someString」のすべてのインスタンスでグローバル置換を実行したいと考えています。
基本的に私が今持っているものは次のとおりです。
var body = document.getElementsByTagName('body')[0].innerHTML;
body = body.replace(/(someString)/gi, '<a href="http://domain.com/$1">$1</a>');
document.getElementsByTagName('body')[0].innerHTML = body;
しかし、明らかにそれは十分ではありません。私は数時間前から苦労してきました。ここでの答え(HTMLで正規表現を使用しないことを主張する頑固なものを含む)をすべて読んでいるので、これを行う方法についての提案をしています。私はストレートJSを使用したいが、必要に応じてjQueryを使用することができます。
編集 - サンプルHTML:その場合は
<body>
someString
<script type="text/javascript">
var someString = 'blah';
console.log(someString);
</script>
<a href="someString.html">someString</a>
</body>
、 "someString" の唯一の非常に最初のインスタンスを交換する必要があります。
なぜ正規表現タグですか?あなたがすでに認めているように、それは正規表現の仕事ではありません。 –
"someString"は、私がマッチを行うために必要な複雑な正規表現によって定義されています。私はそれの周りを回ることはできません。潜在的にトラバーサル/親ノード型は正規表現を使わずに集めることができますが、実際の文字列のマッチングが行われる限りは選択肢がありません。 – ggutenberg
これをページ上のテキスト内で置き換えるだけですか? – Orbling