Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

String.prototype.match()

BaselineWidely available

match()String 値のメソッドで、この文字列の正規表現に対する照合結果を受け取ります。

試してみましょう

const paragraph = "The quick brown fox jumps over the lazy dog. It barked.";const regex = /[A-Z]/g;const found = paragraph.match(regex);console.log(found);// Expected output: Array ["T", "I"]

構文

js
match(regexp)

引数

regexp

正規表現オブジェクト、またはSymbol.match を持つ任意のオブジェクトです。

regexpRegExp 以外のオブジェクトであった場合、暗黙的にRegExp への変換がnew RegExp(regexp) を使用して行われます。

一切引数を与えずにmatch() メソッドを使った場合、空文字列 1 つを持つArray[""] が得られます。これはmatch(/(?:)/) と同じになるからです。

返値

Array を返します。これはグローバル (g) フラグの有無によって内容が変わります。一致するものが見つからなかった場合はnull を返します。

  • g フラグがあった場合は、正規表現全体に一致したすべての結果を返しますが、キャプチャグループは返しません。
  • g フラグがなかった場合、最初に完全に一致したものと、それに関するキャプチャグループを返します。この場合、match()RegExp.prototype.exec() と同じ結果になります(追加のプロパティ付きの配列)。

解説

String.prototype.match 自体の実装はとてもシンプルです。引数の文字列を最初の引数としてSymbol.match メソッドを呼び出すだけです。実際の実装はRegExp.prototype[Symbol.match]() から来ています。

  • ある文字列が正規表現RegExp に一致するかどうかを知る必要がある場合は、RegExp.prototype.test() を使用してください。
  • 一番最初に一致したものだけが欲しい場合は、代わりにRegExp.prototype.exec() を使ったほうが良いかもしれません。
  • キャプチャグループを取得する場合でグローバルフラグを設定する場合は、RegExp.prototype.exec() を使用してください。

正規表現が渡されたときのmatch() の意味についての詳しい情報は、RegExp.prototype[Symbol.match]() を参照してください。

match() の使用

以下の例において、match()"Chapter" とそれに続く 1 桁以上の数字、それに続く 0 回以上の小数点と数字を見つけるために使われています。

正規表現がi フラグを含んでいるので、大文字と小文字の違いは無視されます。

js
const str = "For more information, see Chapter 3.4.5.1";const re = /see (chapter \d+(\.\d)*)/i;const found = str.match(re);console.log(found);// [//   'see Chapter 3.4.5.1',//   'Chapter 3.4.5.1',//   '.1',//   index: 22,//   input: 'For more information, see Chapter 3.4.5.1',//   groups: undefined// ]

上の照合結果では、'see Chapter 3.4.5.1' が一致する文字列全体です。'Chapter 3.4.5.1'(chapter \d+(\.\d)*) によって捕捉されました。'.1'(\.\d) によって捕捉された最後の値です。index プロパティ (22) は一致する文字列全体の 0 基点のインデックスです。input プロパティは解釈できた元の文字列です。

match() での global と ignoreCase フラグの使用

以下の例は、 g と i フラグをmatch() で使用した実例です。A からE までと、a からe までのすべての文字が返され、それぞれが配列の個々の要素に入ります。

js
const str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";const regexp = /[A-E]/gi;const matches = str.match(regexp);console.log(matches);// ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']

名前付きキャプチャグループの使用

名前付きキャプチャグループに対応しているブラウザーでは、次のコードは"fox" または"cat"animal という名前のグループに入れます。

js
const paragraph = "The quick brown fox jumps over the lazy dog. It barked.";const capturingRegex = /(?<animal>fox|cat) jumps over/;const found = paragraph.match(capturingRegex);console.log(found.groups); // {animal: "fox"}

引数なしの match() の使用

js
const str = "Nothing will come of nothing.";str.match(); // returns [""]

match() を[Symbol.match]() を実装している RegExp でないオブジェクトで使用

オブジェクトにSymbol.match メソッドがある場合、カスタムマッチャーとして使用することができます。Symbol.match の返値がmatch() の返値になります。

js
const str = "Hmm, this is interesting.";str.match({  [Symbol.match](str) {    return ["Yes, it's interesting."];  },}); // returns ["Yes, it's interesting."]

RegExp 以外を引数として取る

正規表現regexp 引数が文字列または数値の場合、RegExpnew RegExp(regexp) を使用して暗黙的に変換されます。

js
const str1 =  "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.";const str2 =  "My grandfather is 65 years old and My grandmother is 63 years old.";const str3 = "The contract was declared null and void.";str1.match("number"); // "number" は文字列です。 ["number"] を返します。str1.match(NaN); // NaN の型は数値です。 ["NaN"] を返します。str1.match(Infinity); // Infinity の方は数値です。 ["Infinity"] を返します。str1.match(+Infinity); // ["Infinity"] を返しますstr1.match(-Infinity); // ["-Infinity"] を返しますstr2.match(65); // ["65"] を返しますstr2.match(+65); // 正の符号が付いた数値です。 ["65"] を返しますstr3.match(null); // ["null"] を返します。

特殊文字が適切にエスケープされていないと、予期しない結果になることがあります。

js
console.log("123".match("1.3")); // [ "123" ]

正規表現中の. はどのような文字にも一致するので、これは一致します。 ドット文字にのみ一致するようにするには、入力文字列をエスケープする必要があります。

js
console.log("123".match("1\\.3")); // null

仕様書

Specification
ECMAScript® 2026 Language Specification
# sec-string.prototype.match

ブラウザーの互換性

関連情報

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp