An ESLint plugin for writing better regular expressions.
This project is deprecated.
Please use eslint-plugin-regexp
instead.
eslint-plugin-clean-regex
and eslint-plugin-regexp
have joined forces. We decided to work together on one ESLint plugin for JavaScript regexes. Since maintaining two plugins with similar rules takes too much work, I decided to stop working on eslint-plugin-clean-regex
.
As of right now, eslint-plugin-regexp
supports all rules of eslint-plugin-clean-regex
along improvements to those rules and with many more useful rules.
See the migration guide.
This is an ESLint plugin to lint JavaScript regular expressions. Its goal is to help both beginners and experts to write better regular expressions by pointing out errors and suggesting improvements.
The plugin offers rules for possible errors, best practices, and coding style in regular expressions.
Right now, this project is still young (and many rules are opinionated). Feel free to open an issue if you think rules are too strict/lax/inflexible. Suggestions and feature requests are welcome as well!
You'll need to install ESLint and eslint-plugin-clean-regex
:
$ npm i eslint eslint-plugin-clean-regex --save-dev
Note: If you installed ESLint globally (using the -g
flag) then you must also install eslint-plugin-clean-regex
globally.
Add clean-regex
to the plugins section of your .eslintrc
configuration file (you can omit the eslint-plugin-
prefix) and configure the rules you want:
{ "plugins": [ "clean-regex" ], "rules": { "clean-regex/rule-name": 2 } }
You can also use the recommended config:
{ "plugins": [ "clean-regex" ], "extends": [ "plugin:clean-regex/recommended" ] }
The setting of every rule in the recommended config can be found in the table below.
Some highlights of the working and working-together of rules in the recommended config.
Optimize character classesBefore:
- /[0-9]/i - /[^\s]/ - /[a-fA-F0-9]/i - /[a-zA-Z0-9_-]/ - /[a-z\d\w]/ - /[\S\d]/ - /[\w\p{ASCII}]/u
After:
- /\d/ - /\S/ - /[a-f0-9]/i - /[\w-]/ - /\w/ - /\S/ - /\p{ASCII}/u
Before:
- /(?:\w|\d)+/ - /(?:a|(b)|c|(?:d)|(?:ee)){0,}/ - /(?<!\w)a+(?=$)/mi - /[\s\S]#[\0-\uFFFF]/ysi - /\d*\w(?:[a-z_]|\d+)*/im
After:
- /\w+/ - /(?:[acd]|(b)|ee)*/ - /\ba+$/im - /.#./sy - /\w+/Detect non-functional code and potential errors
- /\1(a)/ // `\1` won't work - /a+b*?/ // `b*?` can be removed - /(?:\b)?a/ // `(?:\b)?` can be removed - /[a-z]+|Foo/i // `Foo` can be removed - /(?=a?)\w\Ba/ // `(?=a?)` and `\B` always accept and can be removed - /[*/+-^&|]/ // `+-^` will match everything from \x2B to \x5E including all character A to Z
Fixable rules are denoted with a 🔧.
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