Regular expressions
RegExp は正規表現によるパターンマッチングを提供します。ES2018 で名前付きキャプチャグループ、後読みアサーション、dotAll フラグ、Unicode プロパティエスケープが追加されました。
概要
RegExp は正規表現によるパターンマッチングを提供します。ES2018 で名前付きキャプチャグループ、後読みアサーション、dotAll フラグ、Unicode プロパティエスケープが追加されました。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
| 1 | 12 | 1 | 1 | 18 | 1 | |
| [Symbol.match]() は RegExp インスタンスのメソッドで、 String.prototype.match() がどのように動作するのかを指定します。さらに、これが存在するかどうかが、そのオブジェクトが正規表現とみなされるかどうかにも影響します。 | 50 | 13 | 49 | 10 | 50 | 10 |
| [Symbol.matchAll]() は RegExp インスタンスのメソッドで、 String.prototype.matchAll がどのように動作するのかを指定します。 | 73 | 79 | 67 | 13 | 73 | 13 |
| [Symbol.replace]() は RegExp インスタンスのメソッドで、正規表現がパターンとして渡されたときに String.prototype.replace() およびString.prototype.replaceAll() がどのように動作するかを指定します。 | 50 | 79 | 49 | 10 | 50 | 10 |
| [Symbol.search]() は RegExp インスタンスのメソッドで、 String.prototype.search がどのように動作するのかを指定します。 | 50 | 13 | 49 | 10 | 50 | 10 |
| RegExp[Symbol.species] は静的なアクセサープロパティで、特定の RegExp メソッドのコピーされた正規表現を構築するのに使用されたコンストラクターを返します。 | 51 | 13 | 49 | 10 | 51 | 10 |
| [Symbol.split]() は RegExp インスタンスのメソッドで、 String.prototype.split にセパレーターとして正規表現が渡されたときにどのように動作するのかを指定します。 | 50 | 79 | 49 | 10 | 50 | 10 |
| RegExp() コンストラクターは RegExp オブジェクトを生成します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| dotAll は RegExp インスタンスのアクセサープロパティで、正規表現で s フラグが使用されているかどうかを示します。 | 62 | 79 | 78 | 11.1 | 62 | 11.3 |
| exec() は RegExp インスタンスのメソッドで、指定された文字列の中でこの正規表現と一致するものを検索し、その結果の配列、または null を返します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| flags は RegExp インスタンスのプロパティで、現在の正規表現オブジェクトのフラグから成る文字列を返します。 | 49 | 79 | 37 | 9 | 49 | 9 |
| global は RegExp インスタンスのプロパティで、g フラグが正規表現で使われているかどうかを返します。 | 1 | 12 | 1 | 1 | 18 | 1 |
RegExp.global.prototype accessor プロトタイプ アクセサー プロパティ (ES2015) | 48 | 12 | 38 | 1.3 | 48 | 1 |
| hasIndices は RegExp インスタンスのプロパティで、その正規表現で d フラグが使用されたかどうかを示します。 | 90 | 90 | 88 | 15 | 90 | 15 |
| ignoreCase は RegExp インスタンスのアクセサープロパティで、i フラグが正規表現で使われているかどうかを示します。 | 1 | 12 | 1 | 1 | 18 | 1 |
RegExp.ignoreCase.prototype accessor プロトタイプ アクセサー プロパティ (ES2015) | 48 | 12 | 38 | 1.3 | 48 | 1 |
| lastIndex は RegExp インスタンスのデータプロパティで、次の照合を開始する位置を指定します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| multiline は RegExp のアクセサープロパティで、正規表現で m フラグが使用されているかどうかを返します。 | 1 | 12 | 1 | 1 | 18 | 1 |
RegExp.multiline.prototype accessor プロトタイプ アクセサー プロパティ (ES2015) | 48 | 12 | 38 | 1.3 | 48 | 1 |
| source は RegExp のアクセサープロパティで、正規表現オブジェクトのソーステキストの入った文字列を返します。これには、両端の 2 つのスラッシュやフラグは含まれません。 | 1 | 12 | 1 | 1 | 18 | 1 |
RegExp.source.empty regex string 空の正規表現の場合は「(?:)」 | 6 | 12 | 38 | 5 | 18 | 4.2 |
RegExp.source.escaping 改行とスラッシュはエスケープされます | 73 | 12 | 38 | 6 | 73 | 6 |
RegExp.source.prototype accessor プロトタイプ アクセサー プロパティ (ES2015) | 48 | 12 | 41 | 1.3 | 48 | 1 |
| sticky は RegExp インスタンスのアクセサープロパティで、この正規表現に y フラグが使用されているかどうかを返します。 | 49 | 13 | 3 | 10 | 49 | 10 |
RegExp.sticky.anchored sticky flag ES2015 によるアンカー スティッキー フラグの動作 | 49 | 13 | 44 | 10 | 49 | 10 |
RegExp.sticky.prototype accessor プロトタイプ アクセサー プロパティ (ES2015) | 49 | 13 | 38 | 10 | 49 | 10 |
| test() は RegExp インスタンスのメソッドで、正規表現と指定された文字列を照合するための検索を実行します。一致があった場合は true を、それ以外の場合は false を返します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| toString() は RegExp インスタンスのメソッドで、は正規表現を表す文字列を返します。 | 1 | 12 | 1 | 1 | 18 | 1 |
RegExp.toString.escaping 改行とスラッシュはエスケープされます | 73 | 12 | 38 | 6 | 73 | 6 |
| unicode は RegExp インスタンスのアクセサープロパティで、この正規表現に u フラグが使用されているかどうかを返します。 | 50 | 12 | 46 | 10 | 50 | 10 |
| unicodeSets は RegExp インスタンスのアクセサープロパティで、この正規表現に v フラグが使用されているかどうかを返します。 | 112 | 112 | 116 | 17 | 112 | 17 |
| その他 | ||||||
| 正規表現リテラルは 2 つのスラッシュ (/) で囲まれます。 レクサーは、スラッシュが文字クラス ([]) 内に出現しない限り、次のエスケープされていないスラッシュまたは行末までのすべての文字を消費します。 一部の文字 (つまり、識別子の部分) は、フラグを示す右スラッシュの後に出現することがあります。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 後方参照は、前回のキャプチャグループの部分一致を参照し、そのグループと同じテキストに一致します。名前付きキャプチャグループの場合は、名前付き後方参照構文を使用する方ができればよいでしょう。 | 1 | 12 | 1 | 1 | 18 | 1 |
| キャプチャグループは、サブパターンをグループ化し、グループ全体に数量詞を適用したり、グループ内で論理和を使用したりすることができます。サブパターンの一致に関する情報を記憶しているので、後方参照で参照したり、照合結果からその情報にアクセスしたりすることができます。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 文字クラスは、独自の文字集合に含まれる、または含まれない文字に一致します。v フラグを有効にすると、可変長のの文字列にも使用することができます。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 文字クラスエスケープは、文字の集合を表すエスケープシーケンスです。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 文字エスケープは、リテラルの形ではうまく表現できない文字を表します。 | 1 | 12 | 1 | 1 | 18 | 1 |
javascript.regular_expressions.character_escape.unicode Unicode 文字エスケープ: `\u{...}` | 50 | 12 | 46 | 10 | 50 | 10 |
| 論理和は、複数の選択肢を指定します。いずれかの選択肢が入力に一致すると、その論理和全体が一致することになります。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 入力境界アサーションは、文字列の減殺の位置が入力境界であるかどうかを検査します。入力境界は文字列の先頭または末尾です。m フラグが設定された場合は、行の先頭または末尾です。 | 1 | 12 | 1 | 1 | 18 | 1 |
| リテラル文字は、入力テキスト内で一致するもの自体を示します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 先読みアサーションの「先読み」とは、それ以降の入力を指定されたパターンに照合しようとしますが、入力を消費することはありません。照合に成功した場合、入力の現在の位置はそのままです。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 後読みアサーションの「後読み」とは、それ以前の入力を指定されたパターンに照合しようとしますが、入力を消費することはありません。照合に成功した場合、入力の現在の位置はそのままです。パターン内のそれぞれのアトムは、逆順に照合します。 | 62 | 79 | 78 | 16.4 | 62 | 16.4 |
| 修飾子は、正規表現の特定の部分のフラグ設定を上書きします。これは、特定の正規表現構文要素の意味を変更するフラグを有効または無効にするために使用できます。これらのフラグは i, m, s です。 | 125 | 125 | 132 | 26 | 125 | 26 |
| 名前付き後方参照は、以前の[名前付きキャプチャグループ]の一致部分を参照し、そのグループと同じテキストに一致します。名前なしキャプチャグループの場合は、通常の後方参照構文を使用する必要があります。 | 64 | 79 | 78 | 11.1 | 64 | 11.3 |
| 名前付きキャプチャグループは特定の種類のキャプチャグループで、グループに名前を付けることができます。グループの照合結果は、パターン内のインデックスではなく、この名前で後で識別することができます。 | 64 | 79 | 78 | 11.1 | 64 | 11.3 |
javascript.regular_expressions.named_capturing_group.duplicate_named_capturing_groups 異なる論理和の選択肢での重複した名前は許可されます | 125 | 125 | 129 | 17 | 125 | 17 |
| 非キャプチャグループはサブパターンをグループ化し、グループ全体に数量詞を適用したり、グループ内で論理和を使用したりすることができます。これは JavaScript で発生したグループ化演算子のように動作します。キャプチャグループとは異なり、一致したテキストを記憶しないため、パフォーマンスが向上し、パターンが有用なキャプチャグループを含む場合の混乱を避けることができます。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 数量詞は、アトムを指定した回数繰り返します。数量詞は適用するアトムの後に配置します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| Unicode 文字クラスエスケープは文字クラスエスケープの一種で、Unicode プロパティで指定された一連の文字に一致します。これは Unicode 対応モードでのみ対応しています。v フラグが有効である場合、有限長の文字列と照合するために使用することもできます。 | 64 | 79 | 78 | 11.1 | 64 | 11.3 |
| ワイルドカードは改行文字を除くすべての文字に一致します。s フラグが設定された場合は、改行文字にも一致します。 | 1 | 12 | 1 | 1 | 18 | 1 |
| 単語境界アサーションは、文字列の現在の位置が単語境界であるかどうかを調べます。単語境界とは、次の文字が単語文字で、前の文字が単語文字でない場合、またはその逆の場合です。 | 1 | 12 | 1 | 1 | 18 | 1 |
- ケースの折りたたみはバージョン13で実装
基本構文
// Named capture groups
const dateRegex = /(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})/;
const match = '2026-04-06'.match(dateRegex);
console.log(match.groups.year); // '2026'
console.log(match.groups.month); // '04'
// dotAll flag (s)
/hello.world/s.test('hello\
world'); // true
// Unicode properties
/\p{Script=Han}/u.test('漢'); // true</day></month></year> ライブデモ
Multiple rowmatch with DotAll furag.
S furag specified and, dt(.) that change rowco-d to also matchlike to..
Unicode Propertyescape-p
U furag and \p{...} Use, specific. Characterbody type(character etc) distinguish..
実務での使いどころ
-
Regular expressions の活用
パターンマッチングと文字列検索・置換を行うオブジェクト。名前付きキャプチャや後読みなどの機能を提供。
注意点
- 特になし。すべての主要ブラウザで安定して動作する。
アクセシビリティ
- JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。
参考リンク
Powered by web-features