0
テキストのすべての単語をスパンで囲むために、正規表現を見つけようとしています。私は次のコードを使用しています:img要素を除いて、範囲内のすべての単語をラップする正規表現
$this.html($this.text().replace(
/([^\s]*\s)/g, "<span>$1</span>"));
ここでこれはdiv要素と呼ばれています。しかし、div内にあるimgとa要素は消えます。私は、正規表現を変更しようとしました:
$this.html($this.text().replace(
/([^(\s | <a.*/a> | <img.*/img>)]*\s)/g, "<span>$1</span>"));
私は問題を解決しませんでした。
誰かが私を助けることができますか?
チェックhttp://stackoverflow.com/questions/20689220/wrap-character-in-string-excluding-a-link-tag-with-javascript-regex –
あなたがしようテキストのみを囲みますか?htmlマークアップのサンプルを提供します – guradio
テキストではなく要素の単語にのみ作用する場合は、テキストノードのみを処理する必要があります。 jQueryは、テキストノードレベルで動作する少数のものしか提供していません。[contents'](http://api.jquery.com/contents)関数は、(要素だけでなく)すべてのノードを返します。コンテナ。テキストノードをスパンで置き換えて 'each'でループすることができます。これには、 'insertBefore'のようなDOMメソッドを使う必要があります。それは自明ではありませんが、難しいものではありません。私は妥当なデモを盛り上げる時間がないので、コメントとして投稿する。 –