RegExp.prototype[@@split]()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since январь 2020 г..
[@@split]() метод делит объект String в массив строк, путём разбиения строки на подстроки.
Интерактивный пример
class RegExp1 extends RegExp {
[Symbol.split](str, limit) {
const result = RegExp.prototype[Symbol.split].call(this, str, limit);
return result.map((x) => `(${x})`);
}
}
console.log("2016-01-02".split(new RegExp1("-")));
// Expected output: Array ["(2016)", "(01)", "(02)"]
console.log("2016-01-02".split(new RegExp("-")));
// Expected output: Array ["2016", "01", "02"]
Синтаксис
regexp[Symbol.split](str[, limit])
Параметры
Возвращаемое значение
Array содержит подстроки как элементы.
Описание
Этот метод вызывает String.prototype.split(), если аргумент separator объект RegExp. Для примера, два данных выражения возвращают одинаковый результат.
"a-b-c".split(/-/);
/-/[Symbol.split]("a-b-c");
Этот метод существует для кастомизации поведения (разбиения) подкласса RegExp.
Если аргумент str не объект типа RegExp, метод String.prototype.split() не вызывается, так же не создаётся объект типа RegExp.
Примеры
>Прямой вызов
Этот метод может быть использован, так же как String.prototype.split(), кроме случаев когда this отличаются и аргументы идут в разном порядке.
var re = /-/g;
var str = "2016-01-02";
var result = re[Symbol.split](str);
console.log(result); // ["2016", "01", "02"]
Использование @@split в подклассах
Подклассы RegExp могут переопределить [@@split]() для изменения стандартного поведения.
class MyRegExp extends RegExp {
[Symbol.split](str, limit) {
var result = RegExp.prototype[Symbol.split].call(this, str, limit);
return result.map((x) => "(" + x + ")");
}
}
var re = new MyRegExp("-");
var str = "2016-01-02";
var result = str.split(re); // String.prototype.split calls re[@@split].
console.log(result); // ["(2016)", "(01)", "(02)"]
Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-regexp.prototype-%symbol.split%> |
Совместимость с браузерами
Loading…