Baseline Widely available
The [Symbol.split]()
method of RegExp
instances specifies how String.prototype.split
should behave when the regular expression is passed in as the separator.
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(/-/));
// Expected output: Array ["2016", "01", "02"]
Syntax
regexp[Symbol.split](str)
regexp[Symbol.split](str, limit)
Parameters
str
The target of the split operation.
limit
Optional
Integer specifying a limit on the number of splits to be found. The [Symbol.split]()
method still splits on every match of this
RegExp pattern (or, in the Syntax above, regexp
), until the number of split items match the limit
or the string falls short of this
pattern.
An Array
containing substrings as its elements. Capturing groups are included.
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[Symbol.split]()
base method exhibits the following behaviors:
[Symbol.species]
to construct a new regexp, thus avoiding mutating the original regexp in any way.g
("global") flag is ignored, and the y
("sticky") flag is always applied even when it was not originally present./a?/
), an empty array is returned. Otherwise, if the regexp can't match an empty string, [""]
is returned.this.exec()
. Since the regexp is always sticky, this will move along the string, each time yielding a matching string, index, and any capturing groups.lastIndex
would still be advanced â if the regex is Unicode-aware, it would advance by one Unicode code point; otherwise, it advances by one UTF-16 code unit.limit
parameter, if provided, while trying to be as close as possible. Therefore, the last match and its capturing groups may not all be present in the returned array if the array is already filled.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 [Symbol.split]()
in subclasses
Subclasses of RegExp
can override the [Symbol.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[Symbol.split]().
console.log(result); // ["(2016)", "(01)", "(02)"]
Specifications Browser compatibility See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4