RegExp.prototype[@@matchAll]() - JavaScript 编辑
The [@@matchAll]
method returns all matches of the regular expression against a string.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.Syntax
regexp[Symbol.matchAll](str)
Parameters
str
- A
String
that is a target of the match.
Return value
An iterator.
Description
This method is called internally in String.prototype.matchAll()
. For example, the following two examples return same result.
'abc'.matchAll(/a/);
/a/[Symbol.matchAll]('abc');
This method exists for customizing the behavior of matchAll()
in RegExp
subclasses.
Examples
Direct call
This method can be used in almost the same way as String.prototype.matchAll()
, except for the different value of this
and the different order of arguments.
let re = /[0-9]+/g;
let str = '2016-01-02';
let result = re[Symbol.matchAll](str);
console.log(Array.from(result, x => x[0]));
// ["2016", "01", "02"]
Using @@matchAll in subclasses
Subclasses of RegExp
can override the [@@matchAll]()
method to modify the default behavior.
For example, to return an Array
instead of an iterator:
class MyRegExp extends RegExp {
[Symbol.matchAll](str) {
const result = RegExp.prototype[Symbol.matchAll].call(this, str);
if (!result) {
return null;
} else {
return Array.from(result);
}
}
}
const re = new MyRegExp('([0-9]+)-([0-9]+)-([0-9]+)', 'g');
const str = '2016-01-02|2019-03-07';
const result = str.matchAll(re);
console.log(result[0]); // [ "2016-01-02", "2016", "01", "02" ]
console.log(result[1]); // [ "2019-03-07", "2019", "03", "07" ]
Specifications
Specification |
---|
ECMAScript (ECMA-262) The definition of 'RegExp.prototype[@@matchAll]' in that specification. |
Browser compatibility
BCD tables only load in the browser
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论