• ベストアンサー

文字列より<・・・>を削除する方法

お世話になります。 s='<div style="・・・">あいうえお</div>'; とか s='<span style="・・・">あいうえお</span>'; などを s='あいうえお'; としたいのですが、 s=s.replace(/\<.+\>/,''); とすると、 s='' となってしまいます。 gオプションを付けて s=s.replace(/\<.+\>/g,''); としても同じです。 どうしたらできるかおわかりの方見えましたら 教えていただけないでしょうか。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

繰り返し指定の + は最長の文字列にマッチするので、<.+>は、s 全体にマッチします。最小マッチの +? を使って、s.replace(/<.+?>/g,"") ですね。 JavaScriptは上記で大丈夫ですが、言語によっては最小マッチの機能がないのでその場合は、/<[^>]+>/ とします。 以下余談。 HTML以外を扱う一般論だとまた違ってきます。HTMLの場合はタグの< >の中に、属性値などで < や > が出てくる事はないのですが、例えば「PHPのタグを消したい」とかで、/<\?php.+?\?>/ とすると、<?php echo "?>"; ?> が駄目です。こういった場合は、正規表現いっぱつではまず無理でしょうね。

rqg2010
質問者

お礼

notnotさん、お早うございます。 お礼が遅くなり申し訳ありません。 できました。 どうもありがとうございました。

その他の回答 (1)

noname#84373
noname#84373
回答No.2

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);

rqg2010
質問者

お礼

_pipi_さん、お早うございます。 お礼が遅くなり申し訳ありませんでした。 こんな方法もあるとは驚きです。 とても参考になりました。 どうもありがとうございました。

関連するQ&A