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 July 2015.

[@@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])

Параметры

str

Цель разбиения.

limit

Необязательное. Целое число ограничивающее кол-во разбиений. [@@split]() метод разбивает все совпадения this RegExp шаблона, до тех пор пока не достигнет числа 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)"]

Спецификации

Specification
ECMAScript® 2025 Language Specification
# sec-regexp.prototype-%symbol.split%

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
[Symbol.split]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также