- ベストアンサー
文字列より<・・・>を削除する方法
お世話になります。 s='<div style="・・・">あいうえお</div>'; とか s='<span style="・・・">あいうえお</span>'; などを s='あいうえお'; としたいのですが、 s=s.replace(/\<.+\>/,''); とすると、 s='' となってしまいます。 gオプションを付けて s=s.replace(/\<.+\>/g,''); としても同じです。 どうしたらできるかおわかりの方見えましたら 教えていただけないでしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
繰り返し指定の + は最長の文字列にマッチするので、<.+>は、s 全体にマッチします。最小マッチの +? を使って、s.replace(/<.+?>/g,"") ですね。 JavaScriptは上記で大丈夫ですが、言語によっては最小マッチの機能がないのでその場合は、/<[^>]+>/ とします。 以下余談。 HTML以外を扱う一般論だとまた違ってきます。HTMLの場合はタグの< >の中に、属性値などで < や > が出てくる事はないのですが、例えば「PHPのタグを消したい」とかで、/<\?php.+?\?>/ とすると、<?php echo "?>"; ?> が駄目です。こういった場合は、正規表現いっぱつではまず無理でしょうね。
その他の回答 (1)
var str = '<div>あいうえ<span><em>お</em></span>.</div>'; var tmp = document.createElement('div'); tmp.innerHTML = str; var text = tmp./*@cc_on @if (1) innerText @else@*/ textContent /*@end@*/; alert(text);
お礼
_pipi_さん、お早うございます。 お礼が遅くなり申し訳ありませんでした。 こんな方法もあるとは驚きです。 とても参考になりました。 どうもありがとうございました。
お礼
notnotさん、お早うございます。 お礼が遅くなり申し訳ありません。 できました。 どうもありがとうございました。