Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
* Some parts of this feature may have varying levels of support.
RegExp オブジェクトは、テキストをパターンと照合するために使用します。
正規表現の入門記事は、 JavaScript ガイドの正規表現をお読みください。正規表現の構文の詳細情報については、正規表現リファレンスを参照してください。
RegExp オブジェクトを生成するには 2 通りの方法があります。「リテラル記法」と「コンストラクター」です。
以下の 3 つの式は、同じ正規表現オブジェクトを生成します。
正規表現は使用できるようになる前に、コンパイルする必要があります。この処理によって、より効率的に照合を行うことができるようになります。この処理の詳細はドットネットのドキュメントに記載されています。
リテラル記法では、正規表現が評価されるときにコンパイルが行われます。一方、RegExp オブジェクトのコンストラクターである new RegExp('ab+c') は、実行時に正規表現をコンパイルすることになります。
動的な入力から正規表現を生成する場合には、 RegExp() コンストラクターの最初の引数として、文字列を使用してください。
new RegExp(/ab+c/, flags) という式は新しい RegExp を生成しますが、第 1 引数を元として使用し、第 2 引数で指定されたフラグとして使用して生成します。
コンストラクター関数を使用する場合は、通常の文字エスケープの規則(文字列内に特殊文字が含まれるとき、前に \ を付加する)が必須です。
例えば、以下 2 つの構文は同等です。
メモ: 何かが「正規表現」であるかどうかは、ダックタイピングになります。 RegExp である必要はありません。
いくつかの組み込みメソッドは、正規表現を特別に扱います。 x が正規表現であるかどうかを複数のステップを経て判断します。
ほとんどの場合、 Symbol.match のチェックを通ることに注意してください。これはつまり、次のようなことです。
この選択は [Symbol.match]() が照合に使用することを意図したプロパティであることを最もよく表しているからです。(exec も使用することができますが、シンボルのプロパティではないので、誤検出が多すぎるでしょう)。正規表現を特別扱いする場所は次のとおりです。
例えば、 String.prototype.endsWith() はすべての入力値を文字列へと強制しますが、引数が正規表現の場合、この関数が文字列と照合するだけのために設計されており、正規表現を使用することは開発者の間違いと考えるため、例外を発生させます。
このチェックを回避するには、 [Symbol.match] に undefined ではない偽値を設定してください。この場合、正規表現は String.prototype.match() には使用できませんが([Symbol.match] がなければ match() は re.toString() で追加したスラッシュ 2 本を持つ新しい RegExp オブジェクトを構築するので)、事実上他のすべてに使用することが可能です。
RegExp のプロパティのいくつかは長い名前と短い(Perl 風の)名前があります。どちらの名前も同じ値を参照します。(Perl は JavaScript が正規表現をモデルにしたプログラミング言語です。)非推奨の RegExp のプロパティも参照してください。
新しい RegExp オブジェクトを生成します。
読み取り専用の静的プロパティで、括弧で囲まれた一致した部分文字列を格納します。
RegExp.input ($_)静的プロパティで、正規表現が正常に一致した最後の文字列を格納します。
RegExp.lastMatch ($&)読み取り専用の静的プロパティで、最後に一致した部分文字列を格納します。
RegExp.lastParen ($+)読み取り専用の静的プロパティで、最後の括弧で囲まれた部分文字列の一致を格納します。
RegExp.leftContext ($`)読み取り専用の静的プロパティで、最近一致した文字列の前の部分文字列を格納します。
RegExp.rightContext ($')読み取り専用の静的プロパティで、最近一致した文字列以下の部分文字列を格納します。
RegExp[Symbol.species]派生オブジェクトを生成するために使用されるコンストラクター関数です。
文字列内の潜在的な正規表現構文文字をエスケープし、リテラルパターンとして RegExp() コンストラクターで安全に使用できる新しい文字列を返します。
これらのプロパティは RegExp.prototype で定義されており、すべての RegExp インスタンスで共有されます。
RegExp.prototype.constructorこのインスタンスオブジェクトを作成したコンストラクター関数。 RegExp インスタンスの場合、初期値は RegExp コンストラクターです。
RegExp.prototype.dotAll. を改行文字に一致させるかどうかのフラグです。
RegExp.prototype.flagsRegExp オブジェクトのフラグから成る文字列です。
RegExp.prototype.global対象文字列で一致する可能性があるすべてのものに対して正規表現を検査するか、それとも、最初に一致するものに対してのみ検査するどうかのフラグです。
RegExp.prototype.hasIndices正規表現の結果で、キャプチャした部分文字列の先頭と末尾の位置を出力するかどうかのフラグです。
RegExp.prototype.ignoreCase文字列を照合する際に、大文字と小文字の違いを無視するかどうかのフラグです。
RegExp.prototype.multiline複数行に渡って文字列を検索するかどうかのフラグです。
RegExp.prototype.sourceパターンのテキストです。
RegExp.prototype.sticky検索が先頭固定 (sticky) であるかどうかのフラグです。
RegExp.prototype.unicodeUnicode 機能が有効かどうかのフラグです。
RegExp.prototype.unicodeSetsu モードへのアップグレードである v フラグが有効かどうか。
これらのプロパティは各 RegExp インスタンスの自分自身で持つプロパティです。
lastIndex次の照合を開始する位置です。
スクリプトの実行中に正規表現を (再) コンパイルします。
RegExp.prototype.exec()文字列引数の中で一致するものを検索します。
RegExp.prototype.test()文字列引数で一致するものがあるかどうか検査します。
RegExp.prototype.toString()指定されたオブジェクトを表す文字列を返します。 Object.prototype.toString() メソッドを上書きします。
RegExp.prototype[Symbol.match]()指定された文字列と照合を実行し、照合結果を返します。
RegExp.prototype[Symbol.matchAll]()文字列で正規表現に一致するものをすべて返します。
RegExp.prototype[Symbol.replace]()指定された文字列で一致する部分を新しい部分文字列で置き換えます。
RegExp.prototype[Symbol.search]()指定された文字列で一致する部分を検索し、その文字列で見つかったパターンの位置を返します。
RegExp.prototype[Symbol.split]()文字列を部分文字列に分割し、指定された文字列を配列に分割します。
以下のスクリプトは、 String.prototype.replace() メソッドを使用して、 名 姓 の形式の名前で照合し、姓, 名 の形式で出力します。
スクリプトでは、置換テキスト中で $1 と $2 を使用して、それぞれ対応する正規表現パターンで一致する括弧がキャプチャした結果を指定しています。
これは、 "Cruz, Maria" と表示します。
既定の改行文字は、プラットフォーム (Unix、Windows など) によって異なります。この例で実行する行分割は、あらゆるプラットフォームで動作します。
正規表現内のパターンの順序が重要であることに注意してください。
デフォルトでは、. 文字は改行に一致しません。改行に一致させるには、s フラグ(dotAll モード)を使用します。
sticky フラグは、正規表現の sticky 照合を実行することを示しており、対象文字列で RegExp.prototype.lastIndex の位置から照合を試みます。
sticky フラグ y を付けると、次の照合は lastIndex の位置で行われるのに対し、 global フラグ g を付けると、検索は lastIndex の位置から始められます。
global フラグ g を付けると、 3 桁だけでなく、 6 桁すべてに一致します。
上の表にもある通り、\w や \W は ASCII 基本文字にのみ一致します。具体的には a から z 、A から Z 、 0 から 9 および _ です。
キリル語やヘブライ語で使われるような非 ASCII 文字と照合するには \uHHHH 形式(HHHH の部分は 16 進表記の Unicode 値)を使ってください。
この例は、文字列全体から Unicode 文字列だけを抜き出す方法を示しています。
Unicode プロパティエスケープ機能は \p{scx=Cyrl} (すべてのキリル文字に一致)または \p{L}/u (すべての言語の文字に一致)のようにより簡潔な表記ができるようにする解決策を導入しています。
メモ: URL を解釈するには、正規表現を使用するより、 URL API におけるブラウザー内蔵の URL パーサーを使用することをお勧めします。
| ECMAScript® 2027 Language Specification # sec-regexp-regular-expression-objects |
Enable JavaScript to view this browser compatibility table.
Firefox 34 より、量指定子を伴うキャプチャグループが動作を妨げている場合に、キャプチャグループに一致するテキストは空文字列ではなく undefined になりました。
ウェブの互換性のため RegExp.$N は引き続き、 undefined ではなく空文字列を返します (バグ 1053944)。
This page was last modified on 2025年11月10日 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.