🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Q&A

解決済

1回答

2908閲覧

正規表現で、文字列の特定の部分をスキップして処理したい

takushikai

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

0グッド

0クリップ

投稿2021/01/01 13:09

JavaScriptのコードからコメントを削除するプログラムを作りたいのですが(webアプリ)、JavaScriptの正規表現で、文字列の特定の部分をスキップして処理をする方法がわかりません。
現在、

JavaScript

1function commentErase(str){ 2 //「/*コメント*/」を削除 3 str = str.replace(//*([^*]|*[^/])**//g , ""); 4 5 //「//コメント」を削除 6 str = str.replace(///.*/g , ""); 7 8 return str; 9}

これで、//の後と/* */の間のコメントは削除できるのですが、""や''で囲まれた文字列の中に//があると、そこからコメントとみなされてしまいます。そこで、""と''で囲まれた部分は上記の処理をスキップしたいと考えたのですが、調べても方法がわかりませんでした。どなたか教えて頂きたく思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

replace一発では無理じゃ無いかと思いましたが、できそうです。
「コメント または 文字列リテラル」を、「コメントなら空文字列、そうでないとそのまま」に置換します。

JavaScript

1function commentErase(str){ 2 return str.replace( 3 ///.*$|/*([^*]|*[^/])**/|"([^"]|\")*"|'([^']|\')*'/gm, 4 (x) => x.substr(0,1)=="/" ? "" : x); 5};

投稿2021/01/01 14:06

otn

総合スコア85888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takushikai

2021/01/01 14:28

回答、本当にありがとうございます!上手く動きました!replaceの第二引数に関数を使うことができるのは初めて知りました。少しそれてしまいますが、挙動を理解したいので質問させてください。関数中の引数xというのは、どのタイミングで何が渡されるのか教えていただけないでしょうか?
takushikai

2021/01/01 14:34

ありがとうございます。読み込んでみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問