Skip to content

Commit

Permalink
2024/07/15 時点の英語版に基づき更新
Browse files Browse the repository at this point in the history
  • Loading branch information
mfuji09 committed Sep 11, 2024
1 parent 414becf commit 24a5ea9
Showing 1 changed file with 23 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -1,19 +1,27 @@
---
title: Symbol.match
slug: Web/JavaScript/Reference/Global_Objects/Symbol/match
l10n:
sourceCommit: 6fbdb78c1362fae31fbd545f4b2d9c51987a6bca
---

{{JSRef}}

**`Symbol.match`** は、文字列に対して正規表現のマッチングを指定します。この関数は {{jsxref("String.prototype.match()")}} メソッドによって呼び出されます
**`Symbol.match`** は静的データプロパティで、[ウェルノウンシンボル](/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol#ウェルノウンシンボル)である `Symbol.match` を表します。{{jsxref("String.prototype.match()")}} メソッドは第 1 引数に対して、入力文字列と現在のオブジェクトとの照合に使われるメソッドを、このシンボルで探します。このシンボルは、オブジェクトが[正規表現として扱われる](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#special_handling_for_regexes)べきかどうかを決定するためにも使用されます

{{EmbedInteractiveExample("pages/js/symbol-match.html")}}
詳しくは、[`RegExp.prototype[Symbol.match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match) および {{jsxref("String.prototype.match()")}} を参照してください。

## 説明
{{EmbedInteractiveExample("pages/js/symbol-match.html", "taller")}}

この関数は、オブジェクトが正規表現の動作をするかどうかを識別するためにも使用されます。たとえば、{{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}}, {{jsxref("String.prototype.includes()")}} メソッドは、最初の引数が正規表現であるかどうかを確認し、正規表現である場合は {{jsxref("TypeError")}} を投げます。ここで、`一致`記号が `false`(または[偽値](/ja/docs/Glossary/Falsy))に設定されている場合、そのオブジェクトが正規表現オブジェクトとして使用されることを意図していないことを示します。
##

{{js_property_attributes(0,0,0)}}
ウェルノウンシンボル `Symbol.match` です。

{{js_property_attributes(0, 0, 0)}}

## 解説

この関数は、[オブジェクトが正規表現の動作をするかどうか](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#正規表現の特殊な扱い)を識別するためにも使用されます。たとえば、{{jsxref("String.prototype.startsWith()")}}, {{jsxref("String.prototype.endsWith()")}}, {{jsxref("String.prototype.includes()")}} メソッドは、最初の引数が正規表現であるかどうかを確認し、正規表現である場合は {{jsxref("TypeError")}} が発生します。ここで、`match` シンボルが `false`(または[偽値](/ja/docs/Glossary/Falsy)、ただし `undefined` でないもの)に設定されている場合、そのオブジェクトが正規表現オブジェクトとして使用されることを意図していないことを示します。

##

Expand All @@ -24,30 +32,33 @@ slug: Web/JavaScript/Reference/Global_Objects/Symbol/match
```js
"/bar/".startsWith(/bar/);

// Throws TypeError, as /bar/ is a regular expression
// and Symbol.match is not modified.
// TypeError が発生。/bar/ が正規表現であり、
// Symbol.match が変更されていないため。
```

ただし、`Symbol.match``false` に設定すると、`match` プロパティを使用する)`isRegExp` チェックは、オブジェクトが正規表現オブジェクトではないことを示します。結果として、`startsWith``endsWith` メソッドは、TypeError を投げません
ただし、`Symbol.match``false` に設定すると、オブジェクトが[正規表現オブジェクトではない](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#正規表現の特殊な扱い)ことを示します。結果として、`startsWith``endsWith` メソッドは、`TypeError` を発生させません

```js
var re = /foo/;
const re = /foo/;
re[Symbol.match] = false;
"/foo/".startsWith(re); // true
"/baz/".endsWith(re); // false
```

## 仕様
## 仕様書

{{Specifications}}

## ブラウザー実装状況
## ブラウザーの互換性

{{Compat}}

## 関連情報

- [`Symbol.match` のポリフィル (`core-js`)](https://github.com/zloirock/core-js#ecmascript-symbol)
- {{jsxref("Symbol.matchAll")}}
- {{jsxref("Symbol.replace")}}
- {{jsxref("Symbol.search")}}
- {{jsxref("Symbol.split")}}
- {{jsxref("RegExp.@@match", "RegExp.prototype[@@match]()")}}
- {{jsxref("String.prototype.match()")}}
- [`RegExp.prototype[Symbol.match]()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp/Symbol.match)

0 comments on commit 24a5ea9

Please sign in to comment.