###前提・実現したいこと
以下のhtml文字列をjavascriptの正規表現で置換したいのですがうまくいきません。
置換前の文字列
html
1例によって金田邸へ忍び込む。<br> 2 <em class="sesame_dot">例によって</em>とは<ruby><rb>今更</rb><rp>(</rp><rt>いまさら</rt><rp>)</rp></ruby>解釈する必要もない。
↓↓↓こうしたい
望んでる置換後の文字列
html
1<span class="my_color">例によって金田邸へ忍び込む。</span><br> 2 <em class="sesame_dot"><span class="my_color">例によって</span></em><span class="my_color">とは</span><ruby><rb><span class="my_color">今更</span></rb><rp>(</rp><rt>いまさら</rt><rp>)</rp></ruby><span class="my_color">解釈する必要もない。</span>
やりたいことはタグとタグの間の文字列を class を持った span タグで囲むことです。ただし、rp タグ、rtタグ、rubyタグは囲まない。
###発生している問題
次のような 正規表現を javascript で書きましたがうまくいきません。
javascript
1//タグとタグの間の文字列を span で囲む 2text = text.replace(/(<(?!ruby|rt|rp)[^<]*?>)([^<]+)(<[^<]*?>)/g,'$1<span class="my_color">$2</span>$3'); 3 4//文頭から最初のタグまでの文字列を span で囲む 5text = text.replace(/^([^<]+?)</gm,'<span class="my_color">$1</span><'); 6 7//最後のタグから文末までの文字列を span で囲む 8text = text.replace(/>([^>]+)$/g,'><span class="my_color">$1</span>');
実際の置換後のhtml
html
1<span class="my_color">例によって金田邸へ忍び込む。</span><span class="br"></span><span class="my_color"> 2 </span><em class="sesame_dot">例によって</em><span class="my_color">とは</span><ruby><rb><span class="my_color">今更</span></rb><rp>(</rp><rt>いまさら</rt><rp>)</rp></ruby><span class="my_color">解釈する必要もない。</span>
em タグに囲まれた文字列「例によって」が span タグで囲まれない!
原因が分かりません。どうすれば希望通りの置換ができますか?
よろしくお願いします!!

回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/01/27 15:51
2017/01/27 19:37 編集