From c3c8260aa6c54a44ce5b31c2b1e12a20827e9a30 Mon Sep 17 00:00:00 2001 From: Masahiro FUJIMOTO Date: Sun, 19 Sep 2021 20:56:57 +0900 Subject: Global_Objects/String/match を更新 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Markdown に変換 - 2021/08/03 時点の英語版に同期 --- .../reference/global_objects/string/match/index.md | 225 +++++++++------------ 1 file changed, 100 insertions(+), 125 deletions(-) (limited to 'files/ja/web/javascript/reference') diff --git a/files/ja/web/javascript/reference/global_objects/string/match/index.md b/files/ja/web/javascript/reference/global_objects/string/match/index.md index 6f98608356..969a27462a 100644 --- a/files/ja/web/javascript/reference/global_objects/string/match/index.md +++ b/files/ja/web/javascript/reference/global_objects/string/match/index.md @@ -3,81 +3,76 @@ title: String.prototype.match() slug: Web/JavaScript/Reference/Global_Objects/String/match tags: - JavaScript - - Method - - Prototype - - Reference - - Regular Expressions - - String - メソッド + - プロトタイプ + - リファレンス - 正規表現 + - String +browser-compat: javascript.builtins.String.match translation_of: Web/JavaScript/Reference/Global_Objects/String/match --- -
{{JSRef}}
+{{JSRef}} + +**`match()`** メソッドは、[正規表現](/ja/docs/Web/JavaScript/Guide/Regular_Expressions)に対する*文字列*の照合結果を受け取ります。 -

match() メソッドは、正規表現に対する文字列のマッチングの結果を受け取ります。

+{{EmbedInteractiveExample("pages/js/string-match.html", "shorter")}} -
{{EmbedInteractiveExample("pages/js/string-match.html", "shorter")}}
+## 構文 - +```js +match(regexp) +``` -

構文

+### 引数 -
str.match(regexp)
+- `regexp` -

引数

+ - : 正規表現オブジェクトです。 -
-
regexp
-
正規表現オブジェクトです。
-
regexpRegExp ではないオブジェクトであった場合、 {{jsxref("RegExp")}} への暗黙的な変換が new RegExp(regexp) を使用して行われます。
-
一切引数を与えずに match() メソッドを使った場合、空の文字列 1 つを持つ {{jsxref("Array")}}、 [""] が得られます。
-
+ `regexp` が `RegExp` ではないオブジェクトであった場合、暗黙的に {{jsxref("RegExp")}} への変換が `new RegExp(regexp)` を使用して行われます。 -

返値

+ 一切引数を与えずに `match()` メソッドを使った場合、空の文字列 1 つを持つ {{jsxref("Array")}}、 `[""]` が得られます。 -

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

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

追加のプロパティ

+- `g` フラグがあった場合は、正規表現全体に一致したすべての結果を返しますが、キャプチャグループは返しません。 +- `g` フラグがなかった場合、最初に完全に一致したものと、それに関するキャプチャグループを返します。この場合、返される要素には下記の追加のプロパティが存在します。 -

上記の説明にある通り、結果は追加のプロパティを含むことがあります。

+#### 追加のプロパティ -
-
groups
-
名前付きキャプチャグループのオブジェクトで、キーは名前、値はキャプチャグループ、または名前付きキャプチャグループが定義されていない場合は {{jsxref("undefined")}} です。詳細はグループと範囲を見てください。
-
index
-
結果が見つかった検索のインデックスです。
-
input
-
検索された文字列のコピーです。
-
+上記の説明にある通り、結果は追加のプロパティを含むことがあります。 -

解説

+- `groups` + - : 名前付きキャプチャグループのオブジェクトで、キーは名前、値はキャプチャグループ、または名前付きキャプチャグループが定義されていない場合は {{jsxref("undefined")}} です。詳細は[グループと範囲](/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges)を参照してください。 +- `index` + - : 結果が見つかった検索のインデックスです。 +- `input` + - : 検索された文字列のコピーです。 -

正規表現が g フラグを含んでいない場合、 str.match() は {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}} と同じ結果を返します。

+## 解説 -

その他のメソッド

+正規表現に `g` フラグが付いていない場合、 `str.match()` は {{jsxref("RegExp.prototype.exec()", "RegExp.exec()")}} と同じ結果を返します。 - +### その他のメソッド -

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

match() の使用

+## 例 -

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

+### match() の使用 -

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

+以下の例において、 `match()` は '`Chapter`' とそれに続く 1 桁以上の数字、それに続く 0 回以上の小数点と数字を見つけるために使われています。 -
let str = 'For more information, see Chapter 3.4.5.1';
-let re = /see (chapter \d+(\.\d)*)/i;
-let found = str.match(re);
+正規表現が `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);
 
@@ -87,100 +82,80 @@ console.log(found);
 //        index: 22,
 //        input: 'For more information, see Chapter 3.4.5.1' ]
 
-// 'see Chapter 3.4.5.1' is the whole match.
-// 'Chapter 3.4.5.1' was captured by '(chapter \d+(\.\d)*)'.
-// '.1' was the last value captured by '(\.\d)'.
-// The 'index' property (22) is the zero-based index of the whole match.
-// The 'input' property is the original string that was parsed.
+// 'see Chapter 3.4.5.1' は一致するもの全体です。 +// 'Chapter 3.4.5.1' は '(chapter \d+(\.\d)*)' でキャプチャされたものです。 +// '.1' は '(\.\d)' でキャプチャされた最後の値です。 +// 'index' プロパティ (22) はゼロから始まる一致した位置です。 +// 'input' プロパティは解釈された元の文字列です。 +``` -

match() での g と i フラグの使用

+### match() での g と i フラグの使用 -

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

+以下の例は、 g と i フラグを `match()` で使用した実例です。 `A` から `E` までと、 `a` から `e` までのすべての文字が返され、それぞれが配列の個々の要素に入ります。 -
let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
-let regexp = /[A-E]/gi;
-let matches_array = str.match(regexp);
+```js
+const str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+const regexp = /[A-E]/gi;
+const matches_array = str.match(regexp);
 
 console.log(matches_array);
 // ['A', 'B', 'C', 'D', 'E', 'a', 'b', 'c', 'd', 'e']
-
+``` + +> **Note:** {{jsxref("String.prototype.matchAll()")}} と[フラグを用いた高度な検索](/ja/docs/Web/JavaScript/Guide/Regular_Expressions#advanced_searching_with_flags)も参照してください。 -
-

メモ: {{jsxref("String.prototype.matchAll()")}} とフラグを用いた高度な検索も参照してください。

-
-

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

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

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

+名前付きキャプチャグループに対応しているブラウザーでは、次のコードは "`fox`" または "`cat`" を "`animal`" という名前のグループに入れます。 -
let paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
+```js
+const paragraph = 'The quick brown fox jumps over the lazy dog. It barked.';
 
-let capturingRegex = /(?<animal>fox|cat) jumps over/;
-found = paragraph.match(capturingRegex);
+const capturingRegex = /(?fox|cat) jumps over/;
+const found = paragraph.match(capturingRegex);
 console.log(found.groups); // {animal: "fox"}
-
+``` -

引数なしの match() の使用

+### 引数なしの match() の使用 -
let str = "Nothing will come of nothing.";
+```js
+const str = "Nothing will come of nothing.";
 
-str.match();   // returns [""]
+str.match(); // returns [""] +``` -

RegExp ではないオブジェクトを引数にする

+### RegExp ではないオブジェクトを引数にする -

引数 regexp が文字列または数値である場合、暗黙に new RegExp(regexp) を使用して {{jsxref("RegExp")}} に変換されます。

+引数 `regexp` が文字列または数値である場合、暗黙に `new RegExp(regexp)` を使用して {{jsxref("RegExp")}} に変換されます。 -

正の符号がついた正の数であった場合、 RegExp() は正の符号を無視します。

+正の符号がついた正の数であった場合、 `RegExp()` は正の符号を無視します。 -
let str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.",
+```js
+const str1 = "NaN means not a number. Infinity contains -Infinity and +Infinity in JavaScript.",
     str2 = "My grandfather is 65 years old and My grandmother is 63 years old.",
     str3 = "The contract was declared null and void.";
-str1.match("number");   // "number" is a string. returns ["number"]
-str1.match(NaN);        // the type of NaN is the number. returns ["NaN"]
-str1.match(Infinity);   // the type of Infinity is the number. returns ["Infinity"]
-str1.match(+Infinity);  // returns ["Infinity"]
-str1.match(-Infinity);  // returns ["-Infinity"]
-str2.match(65);         // returns ["65"]
-str2.match(+65);        // A number with a positive sign. returns ["65"]
-str3.match(null);       // returns ["null"]
- -

仕様書

- - - - - - - - - - - - -
仕様書
{{SpecName('ESDraft', '#sec-string.prototype.match', 'String.prototype.match')}}
- -

ブラウザーの互換性

- -

match() の基本対応

- -

{{Compat("javascript.builtins.String.match")}}

- -

名前付きキャプチャグループの対応

- -

{{Compat("javascript.builtins.RegExp.named_capture_groups")}}

- -

Firefox 特有のメモ

- - - -

関連情報

- - +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"] を返します。 +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{jsxref("String.prototype.matchAll()")}} +- {{jsxref("RegExp")}} +- {{jsxref("RegExp.prototype.exec()")}} +- {{jsxref("RegExp.prototype.test()")}} -- cgit v1.2.3-54-g00ecf