1.11.0 • Published 6 months ago

rregex v1.11.0

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
6 months ago

rregex

A dependency-free WebAssembly build of Rust Regex for Javascript

GitHub Actions Workflow Status GitHub Release NPM Version JSR

Why Rust Regex

Rust has a powerful Regex library with a lot of features that don't exists en the standard Regex object

See the official documentation for more detail

Install

  # NPM
  npm install rregex

  # Yarn
  yarn add rregex

  # PNPM
  pnpm add rregex

  # Deno
  deno add @rregex/rregex

  # JSR
  npx jsr add @rregex/rregex

Supported Runtimes

This package includes builds for multiple runtimes

RuntimeImportversion
Node.js (esm)import { RRegex, RRegexSet } from 'rregex'*
Node.js (commonjs)const { RRegex, RRegexSet } = require('rregex')*
Denoimport { RRegex, RRegexSet } from '@rregex/rregex'>=1.10.8
Bunimport { RRegex, RRegexSet } from '@rregex/rregex'>=1.10.8
Cloudflare Workersimport { RRegex, RRegexSet } from 'rregex/lib/cf.mjs'>=1.10.8
BrowserTODO
StandaloneTODO

Benchmarks

In general terms rregex is at least 1 order of magnitud slower than the native RegExp object, but still have a good performance. Unless you required some of the features that rregex provides, you should always consider using the native RegExp object

Benchmarks are executed using test/deno.bench.mjs, and test/node.bench.mjs

Email

benchmarktime (avg)iter/s
RegExp342.91 µs/iter2,916.2
RRegex7.27 ms/iter137.6

summary: RegExp is 21.19x faster than RRegex

IP

benchmarktime (avg)iter/s
RegExp72.63 µs/iter13,767.7
RRegex7.02 ms/iter142.5

summary: RegExp is 96.59x faster than RRegex

URI

benchmarktime (avg)iter/s
RegExp688.79 ns/iter1,451,825.0
RRegex22.52 ms/iter44.4

summary: RegExp is 32689.42x faster than RRegex

benckmarksbenckmarks
Simple IPIP
emailURI

Note: In order to compare with native regex these benchmarks follow the mariomka/regex-benchmark structure

Known Issues

If you call splitn(text, limit) and the expected result length is equal to limit - 1 the result will include an extra item "", this behavior does not happen if limit es greater. fixed at >=1.3

const regex = new RRegex(",");
expect(regex.splitn("a,b,c", 0)).toEqual([]);
expect(regex.splitn("a,b,c", 1)).toEqual(["a,b,c"]);
expect(regex.splitn("a,b,c", 2)).toEqual(["a", "b,c"]);
expect(regex.splitn("a,b,c", 3)).toEqual(["a", "b", "c"]);

// This result includes an unexpected extra item
expect(regex.splitn("a,b,c", 4)).toEqual(["a", "b", "c", ""]);
expect(regex.splitn("a,b,c", 5)).toEqual(["a", "b", "c"]);

expect(regex.splitn("abc", 0)).toEqual([]);
expect(regex.splitn("abc", 1)).toEqual(["abc"]);

// This result includes an unexpected extra item
expect(regex.splitn("abc", 2)).toEqual(["abc", ""]);
expect(regex.splitn("abc", 3)).toEqual(["abc"]);
1.11.0

6 months ago

1.10.12

1 year ago

1.10.11

1 year ago

1.10.9

1 year ago

1.10.8

1 year ago

1.10.10

1 year ago

1.10.7

1 year ago

1.10.5

1 year ago

1.10.6

1 year ago

1.10.4

1 year ago

1.10.3

1 year ago

1.10.2

2 years ago

1.9.1

2 years ago

1.8.1

2 years ago

1.9.0

2 years ago

1.10.1

2 years ago

1.10.0

2 years ago

1.8.0

2 years ago

1.7.1

2 years ago

1.7.0

3 years ago

1.6.0

3 years ago

1.5.1

3 years ago

1.5.0

4 years ago

1.4.0

4 years ago

1.3.0

4 years ago

1.2.0

4 years ago

1.1.4

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.1.3

4 years ago

1.0.4

4 years ago

1.1.2

4 years ago

1.0.3

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago