2010-12-06 19 views
1

JavaScriptを使用してターゲットテキストをハイパーリンクされたバージョンのターゲットテキストに置き換えようとしています。一般的に言えば、これは問題の関数である。regexとfoo.replace()を使って、アンカータグにない文字列を置き換えることはできますか?

function replace_text_in_editor(target_text, target_type, target_slug) { 
     //if target_text was "Google", then the replacement_text might be "<a href="/path/to/google">Google</a> 
     var replacement_text = get_replacement_text(target_text, target_type, target_slug); 
     if(typeof replacement_text != undefined && replacement_text != '') { 
      var content = ''; 
      content = jQuery("#content").val(); 
      content = content.replace(target_text,replacement_text) 
      if(content != '') { 
       jQuery("#content").val(content); 
      } 
     } 
    } 

私はすでに、ハイパーリンクではありませんテキストを置き換えるだけに警告したいのですが、次の行のカップルの順列を試してみました。

var regex = "/" + target_text + "/"; 
content = content.replace(regex,replacement_text); 

例の試み:

var regex = "/^(<a.*?>)" + target_text + "^(<\/a>)/"; 

誰かが、私はこれを実行する方法を示す正規表現で私を修正してくださいことはできますか?正規表現がステップごとに何をしているのかを説明する必要はありません。私はそれをデザインから推測することができます。ありがとうございました!

+1

解析HTMLで式を構築

は、痛みの原因となります。 [この質問](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)を参照して、適切なパーサーまたはDOMを使用してください。 – cdhowie

+3

あなたが探しているもののソースの例を挙げることはできますか? PS:REはHTMLで問題になることがありますが、実際にはネストされたタグがあり、それが分解し始めてしまうので、あまりにも落胆しないでください。 – Keng

+0

@cdhowie Heh、すばらしいリンク。今読んで。 @ケン:例では、それはまだどこかにリンクされていない "http://google.com"に単語のGoogleをリンクすることがあります。 – buley

答えて

1

私はあなたがこれが欲しいと思うが、私は完全に理解しているかどうかはわかりません。

REを使用してテキストを検索する場合は、(この場合は「Google」)を入力してテキストをグループ$ 1に割り当てることができます。あなたはそれを置き換えるために行くとき、あなたは正規表現で、そのグループの割り当てID $1

\<a href="$1\.com"\>$1\<\/a\> 
+0

テキスト例:'リンクされているGoogleについての評価。リンクされていないGoogleについての何か。そして実際のGoogleリンク.'正規表現 '|()(<\/a>)|'は、リンクされている最後のGoogleとのみ一致します。私はそれ以外のGoogleのすべてのインスタンスに一致させたいと思います。 – buley

関連する問題