§ Quick Take

import { strict as assert } from "assert";
import { rRegex } from "ranges-regex";

const oldString = `The quick brown fox jumps over the lazy dog.`;
const result = rRegex(/the/gi, oldString);

// all regex matches, but in Ranges notation (see codsen.com/ranges/):
assert.deepEqual(result, [
  [0, 3],
  [31, 34],

// if you slice the ranges, you'll get original regex caught values:
  result.map(([from, to]) =>
    oldString.slice(from, to)
  ["The", "the"]

§ Examples

§ Purpose

Takes a string, matches the given regex on it and returns ranges which would do the same thing.

Similarly to String.prototype.match(), a no-results case will yield null (which ranges-merge and others would gladly accept).



In other words, it's a function which takes three input arguments, third one is optional (marked with square brackets).

Input argumentTypeObligatory?Description
regexpRegular expressionyesProvide the regexp to apply onto a string
strStringyesProvide a string upon which to match the regex
replacementString or nullnoIf you want to add a third argument on every of the finding's third argument values, put it here.

Output: array of zero or more arrays (so-called ranges) where each consists of two or more natural number (or zero) indexes OR null.

You can use all the features of regexes: global, case insensitive flags and so on.

This package does not mutate its inputs.

If the input arguments' types are incorrect or absent, library will throw an error.

§ Changelog

See it in the monorepo opens in a new tab, on GitHub.

§ Contributing

To report bugs or request features or assistance, raise an issue on GitHub opens in a new tab.

Any code contributions welcome! All Pull Requests will be dealt promptly.

§ Licence

MIT opens in a new tab

Copyright © 2010–2021 Roy Revelt and other contributors

Related packages:

📦 ranges-iterate 2.0.14
Iterate a string and any changes within given string index ranges
📦 ranges-merge 7.0.14
Merge and sort string index ranges
📦 ranges-ent-decode 4.0.14
Recursive HTML entity decoding for Ranges workflow
📦 ranges-offset 2.0.14
Increment or decrement each index in every range
📦 ranges-crop 4.0.14
Crop array of ranges when they go beyond the reference string's length
📦 ranges-process-outside 4.0.14
Iterate string considering ranges, as if they were already applied
📦 ranges-invert 4.0.14
Invert string index ranges