Help us understand the problem. What is going on with this article?

正規表現の基本まとめ(JavaScript)

概要

正規表現が苦手なので、JavaScriptの正規表現を自分用のメモとしてまとめました。

正規表現とは?

正規表現とは、文字を表現するための表現方法のことです。検索する際によく使われます。正規表現は、「リテラル」と「メタ文字」の2種類で構成されます。

  • リテラル:見たままの文字のこと
  • メタ文字:特殊な意味を持つ文字のこと

デリミタ

デリミタとは、表現の始まりと終わりを示すものです。JavaScriptでは、「/」で表現します。また、終わりを表すデリミタの直後に配置し、デリミタ内部に機能を追加するものを修飾子といいます。

スクリーンショット 2020-02-26 10.26.56.png

主な修飾子

修飾子 何の略? 機能  
g global 合致する結果すべてを抽出する
i case insensitive 大文字と小文字を区別しない
m multiline 複数行を対象にする(^と$)

メタ文字

基本

メタ文字とは、特殊な意味を持つ文字のことです。

文字 表現内容
. 改行を除く任意の1文字

※エスケープ
メタ文字は特別な意味を持つため、そのまま記述すると意味のある指定と解釈されます。 リテラルとして認識させたい場合は、直前に「\」バックスラッシュを付ける必要があります。

例).をエスケープする

\.

文字クラス

[]に文字を列挙することを文字クラスといいます。[]内に記述した文字のいずれか1文字を表現します。

// a、b、cのいずれか1文字を表現する
[abc]

範囲の指定

文字クラス内では、「-」を使って範囲を指定することができます。文字コードの順番で指定します。

// a、b、cのいずれか1文字を表現する
[a-c]

文字クラス内での否定

[ の直後に ^ を記述すると、[]内の文字以外の1文字を表現します。
※[ の直後でない場合は、 ^ のリテラルとして扱われます。

// a、b、c以外の1文字を表現する
[^a-c]

文字クラス内でのエスケープ

文字クラス内では、エスケープが必要なメタ文字は異なります。「.」などはエスケープの必要がありません。

【文字クラス内でエスケープが必要なメタ文字】

メタ文字 条件
^ [ の直後のみ
- 文字と文字の間にある場合
]
\

定義済みの文字クラス

比較的よく使われる文字クラスには、略記が定義されています。

略記 文字クラス 表現内容 備考
\d [0-9] 0-9のいずれか1文字 digitの略
\D [^0-9] 0-9以外の1文字 \dの否定形
\w [a-zA-Z0-9_] a-z、A-Z、0-9、_のいずれか1文字 wordの略
\W [^a-zA-Z0-9_] a-z、A-Z、0-9、_以外の1文字 \wの否定形
\s [\n\t\r\f ] 改行、タブ、リターン、改ページ、スペースのいずれか1文字 spaceの略
\S [^\n\t\r\f ] 改行、タブ、リターン、改ページ、スペース以外の1文字 \sの否定形
\n 改行
\t タブ
\r リターン
\f 改ページ

論理和指定子

aとbのいずれかという指定をすることができます。

// aまたはbの1文字を表現する
a|b

グループ化

()で囲むことで正規表現をグループ化することができます。

// abcまたはabdのいずれかを表現する
ab(c|d)

量指定子

直前の文字直前部分の正規表現を何個繰り返すかを表現します。

量指定子 表現内容
* 0個以上   
+ 1個以上   
? 0個または1個   
{n} n個
{min,} min個以上     
{min, max} min個以上、max個以下

※最長一致と最短一致
量指定子はデフォルトで、条件を満たすものが複数あった場合、一番ながいものと一致するようになっています。これを最長一致といいます。
最短一致(一番短いものと一致するよう)にするには、量指定子の直後に「?」をつけます。

アンカー

位置を表現します。

アンカー 表現内容
^ 行の先頭
$ 行の末尾
\b 単語の境界
\B 単語の境界以外

正規表現の一覧

http://gimite.net/help/devas-ja/all_regex.html

参考

https://murashun.jp/blog/20190215-01.html
https://so-zou.jp/software/tech/programming/tech/regular-expression/meta-character/
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
https://ja.javascript.info/regular-expressions

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした