Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
このページでは、RegExp ガイドの記事の内容を集約して、RegExp 構文のすべての機能を網羅した全体的な早見表を提供します。特定のトピックに関する詳細な情報が必要な場合は、対応する見出しのリンクを辿って完全な記事にアクセスするか、ガイドに移動してください。
文字クラスは、文字の種類を判別するものです。例えば、文字と数字を判別することができます。
|
[xyz] [a-c] |
文字クラス: 囲んだ文字のいずれかに一致します。ハイフンを使用して文字の範囲を指定することもできますが、ハイフンが角括弧で囲まれた最初または最後の文字として現れた場合、それは通常の文字として文字クラスに含めるためのリテラルハイフンと見なされます。 例えば、 [abcd] は [a-d] と同じです。 "brisket" の "b" や "chop" の "c" に一致します。 例えば、 [abcd-] と [-abcd] は "brisket" の "b"、 "chop" の "c"、そして "non-profit" の "-" (ハイフン)に一致します。 例えば、 [\w-] は [A-Za-z0-9_-] と同じです。どちらも "brisket" の "b"、 "chop" の "c"、 "non-profit" の "n" に一致します。 |
|
[^xyz] |
否定文字クラス: つまり、角括弧で囲まれていないもの全てに一致します。ハイフンを使用して文字の範囲を指定することができますが、ハイフンが ^ の後の最初の文字、または角括弧で囲まれた最後の文字として現れた場合、それは通常の文字として文字クラスに含めるためにリテラルハイフンと解釈されます。 例えば、[^abc] は [^a-c] と同じです。 これらは、最初は "bacon" の "o" や "chop" の "h" に一致します。 メモ: ^ の文字は入力の先頭も意味することがあります。 |
| . |
ワイルドカード: 改行文字 (\n、\r、\u2028、\u2029) を除くあらゆる 1 文字と一致します。 例えば、/.y/ は "my" と "ay" に一致ますが、"yes make my day" の "yes" には一致しません。 dotAll フラグ (s) が有効な場合は、改行文字にも一致します。 文字クラス内では . はその特別な意味を失い、文字通りの "." と一致します。 |
| \d |
数字文字クラスエスケープ: あらゆる(アラビア)数字に一致します。[0-9] に相当します。例えば /\d/ や /[0-9]/ は "B2 is the suite number" の "2" に一致します。 |
| \D |
非数字文字クラスエスケープ: あらゆる(アラビア)数字以外の文字に一致します。[^0-9] に相当します。例えば /\D/ や /[^0-9]/ は "B2 is the suite number" の "B" に一致します。 |
| \w |
英数文字クラスエスケープ: アンダースコアを含むあらゆる半角英数字(基本ラテンアルファベット)に一致します。 [A-Za-z0-9_] に相当します。例えば /\w/ は、"apple" の "a"、"$5.28" の "5"、"3D" の "3"、"Émanuel" の "m" に一致します。 |
| \W |
非英数文字クラスエスケープ: 基本ラテンアルファベットの文字以外に一致します。 [^A-Za-z0-9_] と同等です。例えば /\W/ や /[^A-Za-z0-9_]/ は、"50%" の "%" や "Émanuel" の "É" に一致します。 |
| \s |
ホワイトスペース文字クラスエスケープ: ホワイトスペース文字、例えば空白、タブ、改ページ、改行、その他の Unicode 空白文字などの 1 文字に一致します。 [\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] に相当します。例えば /\s\w*/ は "foo bar" の "bar" に一致します。 |
| \S |
非ホワイトスペース文字クラスエスケープ: ホワイトスペース以外の 1 文字に一致します。 [^\f\n\r\t\v\u0020\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff] に相当します。 例えば /\S\w*/ は "foo bar" の "foo" に一致します。 |
| \t | 水平タブに一致します。 |
| \r | 復帰に一致します。 |
| \n | 行送りに一致します。 |
| \v | 垂直タブに一致します。 |
| \f | 改ページに一致します。 |
| [\b] | 後退文字に一致します。単語境界アサーション (\b) についてはアサーションを参照してください。 |
| \0 | NUL 文字に一致します。この後ろに他の数字を続けてはいけません。 |
| \cX |
キャレット記法を使用した制御文字に一致します。 "X" には A–Z または a-z の文字が入ります(コードポイントU+0001–U+001A に対応します)。例えば /\cM\J/ は "\r\n" の "\r" に一致します。 |
| \xhh | hh (2 桁の 16 進数)コードからなる文字に一致します。 |
| \uhhhh | hhhh (4 桁の 16 進数)の値からなる UTF-16 コードユニットに一致します。 |
| \u{hhhh} または \u{hhhhh} | (u フラグがセットされた時のみ) U+hhhh または U+hhhhh (16 進数) Unicode 値からなる文字に一致します。 |
| \p{UnicodeProperty}, \P{UnicodeProperty} |
Unicode 文字クラスエスケープ: Unicode 文字プロパティに基づいた文字に一致します。例えば、絵文字、日本語のカタカナ、中国語や日本語の漢字などです。 |
| \ |
次の文字を特別に扱うこと、「エスケープ」することを示します。 その振る舞いは、2 通りのうちのどちらか 1 つです。
メモ: この文字を文字通りに一致させるには、それ自身をエスケープしてください。つまり、 \ を検索するには /\\/ を使ってください。 |
| x|y |
論理和: "x" または "y" に一致します。パイプ (|) で区切られた各成分は、代替 (alternative)と呼ばれます。例えば、/green|red/ は "green apple" の "green" と "red apple" の "red" に一致します。 メモ: 論理和は「選択肢の集合」を指定するもう一つの方法ですが、文字クラスではありません。論理和は独立したものではありません。大きなパターンの一部にするためにはグループを使用する必要があります。[abc] は機能的には (?:a|b|c) と等価です。 |
アサーションには、行や単語の先頭と末尾を示す境目、他にも何らかの形で一致が可能であることを示すパターン(先読み、後読み、条件式など)が含まれます。
| ^ |
入力開始境界アサーション: 入力の先頭に一致します。複数行フラグ (multiline, m) が有効である場合、改行文字の直後にも一致します。例えば /^A/ は "an A" の "A" には一致しませんが、"An A" の先頭の "A" には一致します。 メモ: この文字は、文字クラスパターンの先頭にある場合は異なる意味を持ちます。 |
| $ |
入力末尾境界アサーション: 入力の末尾に一致します。複数行フラグ (multiline, m) が有効である場合、は、改行文字の直前にも一致します。例えば /t$/ は "eater" の "t" には一致しませんが、"eat" の "t" には一致します。 |
| \b |
単語境界アサーション: 単語の境界に一致します。これは、単語構成文字と後に続く非単語構成文字の間、または非単語構成文字と後に続く単語構成文字の間、または文字列の先頭・末尾です。単語の区切りは一致する「文字」ではありません。アンカーのように、単語の区切りは一致した部分に含まれません。言い換えると、一致した単語の区切りの長さは 0 です。 例:
バックスペース文字 ([\b]) については文字クラスを見てください。 |
| \B |
非単語境界アサーション: 単語以外の境界に一致します。これは、前の文字と次の文字が同じ種類である位置のことです。どちらも単語でなければならないか、または、 2 つの文字の間や 2 つの空白の間など、どちらも非単語でなければなりません。文字列の先頭と末尾は、非単語とみなされます。一致した単語の境界と同じように、一致した非単語の境界も一致に含まれません。例えば、 /onBon/ は "at noon" の "on" に、 /ye\B/ は "possibly yesterday" の "ye" に一致します。 |
メモ: ? の文字は数量子としても使用されます。
| x(?=y) |
先読みアサーション:
"x" の後に "y" が続く場合のみ "x" に一致します。例えば、 /Jack(?=Sprat)/ は "Jack" の後に "Sprat" が続く場合のみ一致します。 |
| x(?!y) |
否定先読みアサーション: "x" の後に "y" が続いていない場合のみ "x" に一致します。例えば、 /\d+(?!\.)/ は数字の後に小数点が続かない場合のみ一致します。/\d+(?!\.)/.exec('3.141')は "141" には一致しますが、 "3" には一致しません。 |
| (?<=y)x |
後読みアサーション: "x" の前に "y" がある場合のみ "x" に一致します。例えば、/(?<=Jack)Sprat/ は、 "Jack" が先行する場合のみ、 "Sprat" に一致します。 /(?<=Jack|Tom)Sprat/ は、 "Jack" か "Tom" が先行する場合のみ、 "Sprat" に一致します。しかし、 "Jack" も "Tom" も一致した結果には含まれません。 |
| (?<!y)x |
否定後読みアサーション: "x" の前に "y" がない場合のみ "x" に一致します。例えば、 /(?<!-)\d+/ は、数字の前にマイナス記号がない場合のみ、数字に一致します。 /(?<!-)\d+/.exec('3') は "3" に一致します。 /(?<!-)\d+/.exec('-3') では数字の前にマイナス記号があるため、一致するものは見つかりません。 |
グループと後方参照は、式の文字のグループを示します。
| (x) |
キャプチャグループ: x に一致し、一致した内容を記憶します。例えば /(foo)/ は "foo bar" の "foo" に一致し、記憶します。 正規表現は複数のキャプチャグループを持つことができます。結果、一般的にキャプチャグループ内の左括弧と同じ順にある、配列の要素のキャプチャグループに一致しています。たいていの場合、これはキャプチャグループ自身の順番です。これはキャプチャグループがネストしている場合に重要です。一致は結果の要素の添字 ([1], …, [n]) や、あらかじめ定義されている RegExp オブジェクトのプロパティ ($1, …, $9) を使ってアクセスできます。 キャプチャグループはパフォーマンス上の損失があります。一致した部分文字列を使わない場合はキャプチャしない括弧(後述)を使ったほうがいいでしょう。 String.prototype.match() は、/.../g フラグが設定されている場合、グループを返しません。しかし、 String.prototype.matchAll() を使用して、すべての一致したものを取得することができます。 |
| (?<Name>x) |
名前付きキャプチャグループ: "x" に一致し、<Name> で指定された名前に従い、返される一致の groups プロパティに記憶されます。山括弧 ('<' と '>') にはグループ名が必須です。 例えば、電話番号からアメリカのエリアコードを取り出す際、 /\((?<area>\d\d\d)\)/ を使うことができます。 結果の番号は matches.groups.area に表示されます。 |
| (?:x) |
キャプチャなしグループ: "x" に一致しますが、一致した内容は記憶しません。一致した部分文字列は、結果の配列の要素 ([1], …, [n]) や、あらかじめ定義されている RegExp オブジェクトのプロパティ ($1, …, $9) から呼び出すことはできません。 |
| (?flags:x), (?flags-flags:x) |
修飾子: 指定したフラグを、囲まれたパターンに対してのみ有効または無効にします。修飾子では、i、m、s フラグのみ使用できます。 |
| \n |
後方参照: "n" に正の整数が入ります。正規表現内において n 番目の括弧の部分に一致した最新の部分文字列への後方参照となります(括弧の数は左からカウントします)。例えば /apple(,)\sorange\1/ は "apple, orange, cherry, peach" の "apple, orange," に一致します。 |
| \k<Name> |
名前付き後方参照: <Name> で指定された名前付きキャプチャグループに一致する最後の部分文字列の後方参照です。 例えば、 /(?<title>\w+), yes \k<title>/ は、 "Do you copy? Sir, yes Sir!" の中の "Sir, yes Sir" に一致します。 メモ: \k は、ここでは、名前付きキャプチャグループの後方参照を開始することを示すために使用されています。 |
数量子は、一致する文字や表現の数を示します。
| x* |
直前のアイテム "x" の 0 回以上の繰り返しに一致します。例えば /bo*/ は "A ghost booooed" の "boooo" や "A bird warbled" の "b" に一致しますが、 "A goat grunted" には一致しません。 |
| x+ |
直前のアイテム "x" の 1 回以上の繰り返しに一致します。{1,} と同等です。例えば /a+/ は "candy" の "a" や "caaaaaaandy" のすべての "a" に一致します。 |
| x? |
直前のアイテム "x" の 0 回か 1 回の出現に一致します。例えば /e?le?/ は "angel" の "el" や "angle" の "le" に一致します。 *、+、?、{} といった数量子の直後に使用した場合、既定とは逆に、その数量子を非貪欲(出現回数が最小のものに一致)とします。既定は貪欲(出現回数が最大のものに一致)です。 |
| x{n} |
"n" には非負の整数が入ります。直前のアイテム "x" がちょうど "n" 回出現するものに一致します。例えば /a{2}/ は "candy" の "a" には一致しませんが、"caandy" のすべての "a"、"caaandy" の最初の 2 つの "a" に一致します。 |
| x{n,} |
"n" には非負の整数が入ります。直前のアイテム "x" の少なくとも "n" 回の出現に一致します。例えば、/a{2,}/ は "candy" の "a" には一致しませんが、"caandy" や "caaaaaaandy" の "a" のすべてに一致します。 |
| x{n,m} |
ここで、"n" と "m" は非負の整数で、m >= n であリ、直前の項目 "x" に最小で "n" 回、最大で "m" 回一致します。 例えば /a{1,3}/ は "cndy" では一致せず、"candy" の 'a'、"caandy" の 最初の 2 個の "a"、"caaaaaaandy" の最初の 3 個の "a" に一致します。 "caaaaaaandy" では元の文字列に "a" が 4 個以上ありますが、一致するのは "aaa" であることに注意してください。 |
|
x*? |
デフォルトで、* や + といった数量子は「貪欲」です。つまり、可能な限り多くの回数を一致させようとします。量指定子の後に ? 文字を付けると、その量指定子は「非貪欲」になります。つまり、最小の一致数が見つかり次第、そこで停止します。例えば、"some <foo> <bar> new </bar> </foo> thing" といった文字列が与えられた場合は、
メモ: ? を {n} の後に付けることは、文法的には有効ですが、実際には意味がありません。 {n} は常に正確に n 回一致しますので、x{n}? は x{n} と同じになります。 |
This page was last modified on 2026年3月21日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.