RegExp.prototype[@@split]()
[@@split]() метод делит объект String в массив строк, путём разбиения строки на подстроки.
Интерактивный пример
Синтаксис
regexp[Symbol.split](str[, limit])
Параметры
str-
Цель разбиения.
limit-
Необязательное. Целое число ограничивающее кол-во разбиений.
[@@split]()метод разбивает все совпаденияthisRegExp шаблона, до тех пор пока не достигнет числаlimitили строка будет корочеthisшаблона.
Возвращаемое значение
Array содержит подстроки как элементы.
Описание
Этот метод вызывает String.prototype.split(), если аргумент separator объект RegExp. Для примера, два данных выражения возвращают одинаковый результат.
js
'a-b-c'.split(/-/);
/-/[Symbol.split]('a-b-c');
Этот метод существует для кастомизации поведения (разбиения) подкласса RegExp.
Если аргумент str не объект типа RegExp, метод String.prototype.split() не вызывается, так же не создаётся объект типа RegExp.
Примеры
Прямой вызов
Этот метод может быть использован, так же как String.prototype.split(), кроме случаев когда this отличаются и аргументы идут в разном порядке.
js
var re = /-/g;
var str = '2016-01-02';
var result = re[Symbol.split](str);
console.log(result); // ["2016", "01", "02"]
Использование @@split в подклассах
Подклассы RegExp могут переопределить [@@split]() для изменения стандартного поведения.
js
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)"]
Specifications
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'RegExp.prototype[@@split]' в этой спецификации. |
Стандарт | Initial definition. |
| ECMAScript (ECMA-262) Определение 'RegExp.prototype[@@split]' в этой спецификации. |
Живой стандарт |
Browser compatibility
BCD tables only load in the browser