質問: text.replace(/>([^>]+)$/g,'>$1'); ``` 実際の置換後のhtml ``` 例によって金田邸へ忍び込む。 例によってとは今更解釈する必要もない。 ``` em タグに囲まれた文字列「例によって」が span タグで囲まれない! 原因が分かりません。どうすれば希望通りの置換ができますか? よろしくお願いします!!
回答: これなんてどうでしょうか? 問題の箇所は * 改行にもタグを囲んじゃってる * タグ閉じとタグ開始の間にある文字が抜けている * スペースだけの場合でもタグを囲んでる そんな感じですね。 ``` //タグとタグの間の文字列を span で囲む text = text.replace(/(<(?!ruby|rt|rp)[^<]*?>)([^<\n]+)(<[^<]*?>)/g,'$1$2$3'); //文頭から最初のタグまでの文字列を span で囲む text = text.replace(/^([^<]+?)$1<'); //最後のタグから文末までの文字列を span で囲む text = text.replace(/>([^>]+)$/g,'>$1'); // タグの狭間のくくりを追加 text = text.replace(/(<\/[^>]+>)([^<]+)(<[^>]+?>)/g,'$1$2$3'); // ダサいスペースだけのタグくくりを排除 text = text.replace(/\s+<\/span>/g,''); ``` 追記) 0:36 参考までにフルソース ``` 例によって金田邸へ忍び込む。 例によってとは今更解釈する必要もない。 例によって金田邸へ忍び込む。 例によってとは今更解釈する必要もない。 ```