正規表現はすべてのタスクに適しているわけではありません。文字列に任意のHTMLを含めることができる場合、HTMLは文脈自由言語であり、正規表現はそれらのサブセットのみをカバーするため、正規表現を使用してすべてのケースを処理することはできません。ループとこれを処理するための大量のコードをいじる前に、次のことを提案しましょう。
ブラウザ環境にいる場合、またはDOMライブラリにアクセスできる場合は、この文字列を一時的なDOM要素内に配置し、テキストノードで作業してから、文字列を読み戻すことができます。
これは、私が数か月間作成し、現在更新されているLinguigiというライブラリを使用した例です。
var element = document.createElement('div');
element.innerHTML = 'This is <b>very bold</b> word.';
var ling = new Linguigi(element);
ling.eachWord(true, function(text) {
return '<w>' + text + '</w>';
});
ling.eachToken(/ +/g, true, function(text) {
return '<s>' + text + '</s>';
});
alert(element.innerHTML);
例: http: //prinzhorn.github.com/Linguigi/(Stackoverflow 12758422
ボタンを押す)