Skip to content

Commit

Permalink
Add vscode-oniguruma and article on JS regex history
Browse files Browse the repository at this point in the history
  • Loading branch information
slevithan committed Oct 24, 2024
1 parent d6fb5b6 commit 95530ef
Showing 1 changed file with 10 additions and 5 deletions.
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -288,20 +288,24 @@ Many regexes found online are low quality. It's risky to use regexes you don't f

*Open source JavaScript libraries for advanced regex use and processing.*

### Alternative regex builders and engines
### Regex builders

- [regex](https://github.com/slevithan/regex) - Regex template tag for readable, high-performance, native JS regexes.
- [regex](https://github.com/slevithan/regex) - A template tag for extended, readable, high-performance JavaScript regexes.
- [XRegExp](https://github.com/slevithan/xregexp) \[[*home*](https://xregexp.com/)] - Extended regex syntax, flags, and utils; useful for backcompat.
- [incr-regex-package](https://github.com/nurulc/incr-regex-package) - Partial/incremental matching, used by [react-rxinput](https://github.com/nurulc/react-rxinput) for input validation with a regex mask.
- [node-re2](https://github.com/uhop/node-re2) - Bindings for RE2, a non-backtracking engine.
- [rregex](https://github.com/2fd/rregex) - Bindings for Rust's `regex`, a non-backtracking engine.

### Abstracted regex syntax

- [Rexx](https://github.com/yyytcool/rexx) - A template tag that uses structured syntax with variables and comments.
- [Melody](https://github.com/yoav-lavi/melody) \[[*docs*](https://yoav-lavi.github.io/melody/book/)] - A language that compiles to regexes.
- Compose with functions: [compose-regexp.js](https://github.com/compose-regexp/compose-regexp.js), [VerbalExpressions](https://github.com/VerbalExpressions/JSVerbalExpressions) (implementations for [many languages](https://verbalexpressions.github.io/)), [magic-regexp](https://github.com/unjs/magic-regexp) \[[*home*](https://regexp.dev/)], [Super Expressive](https://github.com/francisrstokes/super-expressive) \[[*playground*](https://nartc.github.io/ng-super-expressive/)].

### Alternative regex engines

- [incr-regex-package](https://github.com/nurulc/incr-regex-package) - Partial/incremental matching, used by [react-rxinput](https://github.com/nurulc/react-rxinput) for input validation with a regex mask.
- [node-re2](https://github.com/uhop/node-re2) - Bindings for RE2.
- [rregex](https://github.com/2fd/rregex) - Bindings for Rust's `regex`.
- [vscode-oniguruma](https://github.com/microsoft/vscode-oniguruma) - Bindings for Oniguruma.

### Regex processors

- AST builders: [regexpp](https://github.com/eslint-community/regexpp) (used by ESLint), [regexp-tree](https://github.com/DmitrySoshnikov/regexp-tree) (includes optimizer, etc.), [regjsparser](https://github.com/jviereck/regjsparser)/[regjsgen](https://github.com/bnjmnt4n/regjsgen).
Expand Down Expand Up @@ -332,6 +336,7 @@ Many regexes found online are low quality. It's risky to use regexes you don't f
<summary>➕ <b>See also</b></summary>
<br>
- [*Regexes Got Good: The History And Future Of Regular Expressions In JavaScript*](https://www.smashingmagazine.com/2024/08/history-future-regular-expressions-javascript/)
- Backcompat libraries: [regexpu](https://github.com/mathiasbynens/regexpu), [regenerate](https://github.com/mathiasbynens/regenerate) ([Unicode property sets](https://github.com/mathiasbynens/regenerate-unicode-properties)).
- Chrome's `l` (`linear`) regex flag, behind a V8 flag \[[*explainer*](https://v8.dev/blog/non-backtracking-regexp)] \[[*how to run*](https://www.chromium.org/developers/how-tos/run-chromium-with-flags/)].
- [Can I use](https://caniuse.com/) - Up-to-date browser support tables for individual features.
Expand Down

0 comments on commit 95530ef

Please sign in to comment.