こんにちは。

正規表現で/*~~*/を抜くことに挑戦していますが、上手くいきません。

text = text.replace(/\/\*[^*/]*\*\//, "");

これだと、「[^*/]」は「*」か「/」以外の文字をあらわしてしまい、
/*aaa*aaa*/みたいなコメントは拾い上げてくれません。

なにか良い方法をご存知の方がいれば、ご教示願います。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

> これだと、「[^*/]」は「*」か「/」以外の文字をあらわしてしまい、


"*/" を否定するには「否定先読み」を使います。
下記コードで期待通りに動作することを確認しました。

-----
var text = 'start /*aaa*aaa*/ end';
var pattern = '\\/\\*(?:(?!\\*\\/).)*\\*\\/';
text = text.replace(new RegExp(pattern), '');
// console.info('"'+text+'"');
alert('"'+text+'"');
-----

Google検索: 正規表現 否定先読み
http://www.google.co.jp/search?q=%E6%AD%A3%E8%A6 …
    • good
    • 0
この回答へのお礼

否定先読みについてググってみました。
興味深い内容を知ることができました。
正規表現も奥が深いですね…

回答ありがとうございました。

お礼日時:2009/05/25 21:05

多分これで大丈夫です。


text = text.replace(/\/\*[\s\S]*?\*\//g,"");
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

調べてみたところ、数量指定のメタ文字のあとの?は最短マッチと出てきました。
初めて知り、勉強になりました。

あと、少し疑問ですが、[\s\S]は.と変わらないんじゃないでしょうか…?

お礼日時:2009/05/25 20:07

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング