UNB/ CS/ David Bremner/ teaching/ cs2613/ books/ mdn/ Reference/ Global Objects/ RegExp/ RegExp.prototype[@@split]()

The [@@split]() method of RegExp instances specifies how String.prototype.split should behave when the regular expression is passed in as the separator.

Syntax

regexp[Symbol.split](str)
regexp[Symbol.split](str, limit)

Parameters

Return value

An Array containing substrings as its elements. Capturing groups are included.

Description

This method is called internally in String.prototype.split when a RegExp is passed as the separator. For example, the following two examples return the same result.

"a-b-c".split(/-/);

/-/[Symbol.split]("a-b-c");

This method exists for customizing the behavior of split() in RegExp subclasses.

The RegExp.prototype[@@split]() base method exhibits the following behaviors:

Examples

Direct call

This method can be used in almost the same way as String.prototype.split, except the different this and the different order of arguments.

const re = /-/g;
const str = "2016-01-02";
const result = re[Symbol.split](str);
console.log(result); // ["2016", "01", "02"]

Using @@split in subclasses

Subclasses of RegExp can override the [@@split]() method to modify the default behavior.

class MyRegExp extends RegExp {
  [Symbol.split](str, limit) {
    const result = RegExp.prototype[Symbol.split].call(this, str, limit);
    return result.map((x) => `(${x})`);
  }
}

const re = new MyRegExp("-");
const str = "2016-01-02";
const result = str.split(re); // String.prototype.split calls re[@@split].
console.log(result); // ["(2016)", "(01)", "(02)"]

Specifications

Browser compatibility

See also