regexp-match-indices
This package provides a polyfill/shim for the RegExp Match Indices proposal.
The implementation is a replacement for RegExp.prototype.exec
that approximates the beahvior of the proposal. Because RegExp.prototype.exec
depends on a receiver (the this
value), the main export accepts the RegExp
to operate on as the first argument.
Installation
npm install regexp-match-indices
Usage
Standalone
const execWithIndices = ; const text = "zabbcdef";const re = "ab*(cd(?<Z>ef)?)";const result = ;console; // [[1, 8], [4, 8], [6, 8]]
Shim
;// or;// or; const text = "zabbcdef";const re = "ab*(cd(?<Z>ef)?)";const result = re;console; // [[1, 8], [4, 8], [6, 8]]
Configuration
The polyfill can be run in two modes: "lazy"
(default) or "spec-compliant"
. In "spec-compliant"
mode, the indices
property is populated and stored on the result as soon as exec()
is called. This can have a significant performance penalty for existing RegExp's that do not use this feature. By default, the polyfill operates in "lazy"
mode, where the indices
property is defined using a getter and is only computed when first requested.
You can specify the configuration globally using the following:
configmode = "spec-compliant"; // or "lazy"// ormode = "spec-compliant"; // or "lazy"