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 ÑнваÑÑ 2020 г..
[@@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]()меÑод ÑÐ°Ð·Ð±Ð¸Ð²Ð°ÐµÑ Ð²Ñе ÑовпадениÑthisRegExp Ñаблона, до ÑÐµÑ Ð¿Ð¾Ñ Ð¿Ð¾ÐºÐ° не доÑÑÐ¸Ð³Ð½ÐµÑ ÑиÑла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)"]
СпеÑиÑикаÑии
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-regexp.prototype-%symbol.split% > |