HTMLページの特定の単語を同じ単語に置き換えようとしていますが、そのリソースにリンクしているURLとして使用しています。たとえば、「MySQL」という単語を次のように置き換えます<a href="http://mysql.com">MySQL</a>
JS置換機能を正規表現で使用すると、置換は問題なく実行されます。
しかし、それはすでにURLの一部である単語も置き換えています...これが問題です。
MySQLの例では、すでにリンクされている「MySQL」テキストとmysql.comにつながるURLの両方が置き換えられているため、既存のリンクが壊れています。
(.replace呼び出しで)インライン正規表現を更新して、既存のリンク、つまり要素を置き換えないようにする方法はありますか?
置換コードは次のとおりです。
var NewHTML = OriginalHTML
.replace(/\bJavaScript\b/gi, "<a href=\"http://js.com/\">$&</a>")
.replace(/\bMySQL\b/gi, "<a href=\"http://www.mysql.com/\">$&</a>")
;
完全なサンプルコードは次のとおりです(インラインで貼り付けようとしましたが、バックティックで正しく表示されませんでした):http: //pastie.org/private/v4l2s2c42aqduqlopurpw
JS regexpリファレンス(ここ)を調べて、次のような正規表現マッチングで他のさまざまな順列を試しましたが、それだけではページ上のどの単語とも一致しません...
.replace(/\b(\<a\>*!\>)JavaScript\b/i,xxxxx
次の正規表現は、単語が文字通りスラッシュまたはダッシュに触れている場所で一致が発生するのを防ぎます...しかし、それは解決策ではありません(そしてそれは上記のmysqlの例を修正しません):
.replace(/\b(?!\>)(?!\-)(?!\/)MySQL\b(?!\-)(?!\/)/gi, "<a href=\"http://www.mysql.com/\">$&</a>")`
私はstackoverflowや他の場所で関連するスレッドを読みましたが、とにかくJavaScriptではなく、この特定のシナリオを見つけることができないようです。
どんな助けでも大歓迎です。:-)
ありがとう!