Symbol.match
The Symbol.match
static data property represents the well-known symbol specifying the method used to match an input string against the current object, making the object behave like a RegExp
. This function is called by the String.prototype.match()
method.
For more information, see RegExp.prototype[@@match]()
and String.prototype.match()
.
Try it
Value
The well-known symbol @@match
.
Property attributes of Symbol.match |
|
---|---|
Writable | no |
Enumerable | no |
Configurable | no |
Description
This function is also used to identify if objects have the behavior of regular expressions. For example, the methods String.prototype.startsWith()
, String.prototype.endsWith()
and String.prototype.includes()
, check if their first argument is a regular expression and will throw a TypeError
if they are. Now, if the match
symbol is set to false
(or a Falsy value except undefined
), it indicates that the object is not intended to be used as a regular expression object.
Examples
Marking a RegExp as not a regex
The following code will throw a TypeError
:
"/bar/".startsWith(/bar/);
// Throws TypeError, as /bar/ is a regular expression
// and Symbol.match is not modified.
However, if you set Symbol.match
to false
, the object will be considered as not a regular expression object. The methods startsWith
and endsWith
won't throw a TypeError
as a consequence.
const re = /foo/;
re[Symbol.match] = false;
"/foo/".startsWith(re); // true
"/baz/".endsWith(re); // false
Specifications
Specification |
---|
ECMAScript Language Specification # sec-symbol.match |
Browser compatibility
BCD tables only load in the browser