--- 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])
str
limit
Необязательное. Целое число ограничивающее кол-во разбиений. [@@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")}}