Добревідомий символ Symbol.matchAll
повертає ітератор, який видає збіги регулярного виразу з рядком. Ця функція викликається методом String.prototype.matchAll()
.
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.
Опис
Цей символ використовується для String.prototype.matchAll()
та зокрема у RegExp.prototype[@@matchAll]()
. Наступні два приклади повертають однаковий результат:
'абв'.matchAll(/а/);
/а/[Symbol.matchAll]('абв');
Цей метод існує для налаштування поведінки пошуку збігів всередині підкласів RegExp
.
Атрибути поля Symbol.matchAll |
|
---|---|
Доступний для запису | ні |
Доступний для переліку | ні |
Доступний для налаштування | ні |
Приклади
Використання Symbol.matchAll
let re = /[0-9]+/g;
let str = '2016-01-02|2019-03-07';
const numbers = {
*[Symbol.matchAll] (str) {
for (const n of str.matchAll(/[0-9]+/g))
yield n[0];
}
};
console.log(Array.from(str.matchAll(numbers)));
// Array ["2016", "01", "02", "2019", "03", "07"]
Дивіться більше прикладів у String.prototype.matchAll()
та RegExp.prototype[@@matchAll]()
.
Специфікації
Сумісність з веб-переглядачами
BCD tables only load in the browser