RegExp.prototype[@@split]()
[@@split]()
метод делит объект String
в массив строк, путём разбиения строки на подстроки.
Интерактивный пример
Синтаксис
regexp[Symbol.split](str[, limit])
Параметры
str
-
Цель разбиения.
limit
-
Необязательное. Целое число ограничивающее кол-во разбиений.
[@@split]()
метод разбивает все совпаденияthis
RegExp шаблона, до тех пор пока не достигнет числаlimit
или строка будет корочеthis
шаблона.
Возвращаемое значение
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)"]
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