JavaScriptの正規表現でエスケープが必要な文字を現役エンジニアが解説【初心者向け】

初心者向けにJavaScriptの正規表現でエスケープが必要な文字について現役エンジニアが解説しています。正規表現とは文字列を一定のパターンで表記する方法です。正規表現の中では、文字として表現できないタブや改行、特定の役割をする文字に対してエスケープする必要があります。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

JavaScriptの正規表現でエスケープが必要な文字について、TechAcademyのメンター(現役エンジニア)が実際のコードを使って初心者向けに解説します。

JavaScriptについてそもそもよく分からないという方は、JavaScriptとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、JavaScript/jQuery講座の内容をもとにしています。

 

田島悠介

今回は、JavaScriptに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

JavaScriptの正規表現でエスケープが必要な文字について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

正規表現とは

「正規表現」だけで一冊の本ができるほど、その内容は奥深いので、一言で表現するのはなかなか難しいのですが、「文字列を一定のパターンで表記する方法」といった感じでしょうか?

よくある利用ケースは、文章の中から一定の条件で書かれている情報を抜き出したり、設定ファイルから設定項目と情報を抜き出したり、などと利用用途は多岐にわたります。

[PR] JavaScript・jQueryで挫折しない学習方法を動画で公開中

エスケープとは

文字列のパターンを考えるときに、プログラム上で文字として認識できない表現を示すときに利用するものです。ちょっとわかりにくいと思いますが、『改行』や『タブ』などが代表的でイメージしやすいかと思います。このような文字として認識できない文字を示すときに頭に「\(バックスラッシュ(※\となることもあります))」マークを付けて代用します。この「\」マークのことをエスケープと言い「\」マーク付きの文字のことをエスケープシーケンスといいます。『改行(\n)』や『タブ(\t)』になりますね。

また、これ以外に特別な意味を持つ文字を表示するときにもこのエスケープを利用します。例えば『.』という文字を扱う場合、正規表現の中では『.』は特殊文字として扱われ、「任意の文字という意味」を示します。その為、文中に『.』を『.』として使いたい場合に、エスケープを前につけることで特殊文字であることを打ち消して文字としての『.』として扱うことができます。

escape関数とは

escape関数は、引数の文字をエスケープシーケンスの16進数の文字列へ置き換えます。また、特殊文字は@*_+-./以外の文字が符号化されます。

少しわかりにくいと思いますが、日本語をなどの2バイト文字を16進数の表記にエンコードすることができます。戻すときはデコード(unescape関数)を利用します。URLに日本語を渡すときなどに利用します。

下記の用に利用します

01  str = escape("正規表現でエスケープが必要な\'文字\'");
02  console.log(str);
03  str2 = unescape(str);
04  console.log(str2);

 

正規表現でエスケープが必要な文字一覧

  • \\ : バックスラッシュ
  • \’ : シングルクォーテーション
  • \” : ダブルクォーテーション
  • \. : ドット
  • \* : アスタリスク
  • \+ : プラス
  • \? : クエスチョンマーク
  • \^ : キャレット
  • \$ : ドル
  • \- : マイナス
  • \| : パイプ
  • \/ : スラッシュ
  • \{ or \} : カーリーブラケット
  • \( or \) : パーレン
  • \[ or \] : スクエアブラケット

 

まとめ

プログラムの中で、文字列を扱うことはよくあります。引数から取り出す場面や、ファイルから読み込んで処理を行うことなどもよくあります。その際に必ず、エスケープの対応が必要となりますので、しっかりと内容を理解しておきましょう。

筆者プロフィール

小宮山晃史(こみやまこうじ)

現在はOracle系システムの導入コンサルに勤め、仕事でコーディングをする機会は少なくなくなっているが、ライフワークで数多くの言語を勉強中。

iphoneのアプリ開発やWEBサーバの構築など幅広く挑戦しています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、JavaScript・jQueryを使ったWebサービス公開を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。