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>)/";
誰かが、私はこれを実行する方法を示す正規表現で私を修正してくださいことはできますか?正規表現がステップごとに何をしているのかを説明する必要はありません。私はそれをデザインから推測することができます。ありがとうございました!
解析HTMLで式を構築
は、痛みの原因となります。 [この質問](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags)を参照して、適切なパーサーまたはDOMを使用してください。 – cdhowie
あなたが探しているもののソースの例を挙げることはできますか? PS:REはHTMLで問題になることがありますが、実際にはネストされたタグがあり、それが分解し始めてしまうので、あまりにも落胆しないでください。 – Keng
@cdhowie Heh、すばらしいリンク。今読んで。 @ケン:例では、それはまだどこかにリンクされていない "http://google.com"に単語のGoogleをリンクすることがあります。 – buley