--- title: 'RegExp.prototype[@@split]()' slug: Web/JavaScript/Reference/Global_Objects/RegExp/@@split translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/@@split ---
[@@split]() метод делит объект {{jsxref("String")}} в массив сторок, путём разбиения строки на подстроки.
regexp[Symbol.split](str[, limit])
strlimitНеобязательное. Целое число ограничивающее кол-во рабиений. [@@split]() метод разбивает все совпадения this RegExp шаблона, до тех пор пока не достигнет числа limit или строка будет короче this шаблона.
{{jsxref("Array")}} содержит подстроки как элементы.
Этот метод вызывает {{jsxref("String.prototype.split()")}}, если аргумент separator объект {{jsxref("RegExp")}}. Для примера, два данных выражения возвращают одинаковый результат.
'a-b-c'.split(/-/);
/-/[Symbol.split]('a-b-c');
Этот метод существует для кастомизации поведения (разбиения) подкласса RegExp.
Если аргумент str не объект типа {{jsxref("RegExp")}}, метод {{jsxref("String.prototype.split()")}} не вызывается, так же не создается объект типа {{jsxref("RegExp")}}.
Этот метод может быть использован, так же как {{jsxref("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 в подклассахПодклассы {{jsxref("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 | Status | Comment |
|---|---|---|
| {{SpecName('ES6', '#sec-regexp.prototype-@@split', 'RegExp.prototype[@@split]')}} | {{Spec2('ES6')}} | Initial definition. |
| {{SpecName('ESDraft', '#sec-regexp.prototype-@@split', 'RegExp.prototype[@@split]')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.RegExp.@@split")}}