eslint-plugin-regexp is ESLint plugin for finding RegExp mistakes and RegExp style guide violations.
This ESLint plugin provides linting rules relate to better ways to help you avoid problems when using RegExp.
- Find the wrong usage of regular expressions, and their hints.
- Enforces a consistent style of regular expressions.
- Find hints for writing optimized regular expressions.
You can check on the Online DEMO.
See documents.
npm install --save-dev eslint eslint-plugin-regexp
Requirements
- ESLint v6.0.0 and above
- Node.js v8.10.0 and above
Create .eslintrc.*
file to configure rules. See also: http://eslint.org/docs/user-guide/configuring.
Example .eslintrc.js:
module.exports = {
extends: [
// add more generic rulesets here, such as:
// 'eslint:recommended',
'plugin:regexp/recommended'
],
rules: {
// override/add rules settings here, such as:
// 'regexp/rule-name': 'error'
}
}
This plugin provides one config:
plugin:regexp/recommended
... This is the recommended configuration for this plugin. See lib/configs/recommended.ts for details.
The --fix
option on the command line automatically fixes problems reported by rules which have a wrench 🔧 below.
The rules with the following star ⭐ are included in the plugin:regexp/recommended
config.
Rule ID | Description | |
---|---|---|
regexp/confusing-quantifier | disallow confusing quantifiers | |
regexp/control-character-escape | enforce consistent escaping of control characters | 🔧 |
regexp/hexadecimal-escape | enforce consistent usage of hexadecimal escape | 🔧 |
regexp/letter-case | enforce into your favorite case | 🔧 |
regexp/match-any | enforce match any character style | ⭐🔧 |
regexp/negation | enforce use of escapes on negation | 🔧 |
regexp/no-assertion-capturing-group | disallow capturing group that captures assertions. | ⭐ |
regexp/no-dupe-characters-character-class | disallow duplicate characters in the RegExp character class | ⭐ |
regexp/no-dupe-disjunctions | disallow duplicate disjunctions | |
regexp/no-empty-alternative | disallow alternatives without elements | |
regexp/no-empty-group | disallow empty group | ⭐ |
regexp/no-empty-lookarounds-assertion | disallow empty lookahead assertion or empty lookbehind assertion | ⭐ |
regexp/no-escape-backspace | disallow escape backspace ([\b] ) |
⭐ |
regexp/no-invisible-character | disallow invisible raw character | ⭐🔧 |
regexp/no-lazy-ends | disallow lazy quantifiers at the end of an expression | |
regexp/no-legacy-features | disallow legacy RegExp features | |
regexp/no-non-standard-flag | disallow non-standard flags | |
regexp/no-obscure-range | disallow obscure character ranges | |
regexp/no-octal | disallow octal escape sequence | ⭐ |
regexp/no-optional-assertion | disallow optional assertions | |
regexp/no-potentially-useless-backreference | disallow backreferences that reference a group that might not be matched | |
regexp/no-standalone-backslash | disallow standalone backslashes (\ ) |
|
regexp/no-trivially-nested-assertion | disallow trivially nested assertions | 🔧 |
regexp/no-trivially-nested-quantifier | disallow nested quantifiers that can be rewritten as one quantifier | 🔧 |
regexp/no-unused-capturing-group | disallow unused capturing group | |
regexp/no-useless-assertions | disallow assertions that are known to always accept (or reject) | |
regexp/no-useless-backreference | disallow useless backreferences in regular expressions | ⭐ |
regexp/no-useless-character-class | disallow character class with one character | 🔧 |
regexp/no-useless-dollar-replacements | disallow useless $ replacements in replacement string |
|
regexp/no-useless-escape | disallow unnecessary escape characters in RegExp | |
regexp/no-useless-exactly-quantifier | disallow unnecessary exactly quantifier | ⭐ |
regexp/no-useless-flag | disallow unnecessary regex flags | 🔧 |
regexp/no-useless-lazy | disallow unnecessarily non-greedy quantifiers | 🔧 |
regexp/no-useless-non-capturing-group | disallow unnecessary Non-capturing group | 🔧 |
regexp/no-useless-non-greedy | disallow unnecessarily non-greedy quantifiers | 🔧 |
regexp/no-useless-range | disallow unnecessary range of characters by using a hyphen | 🔧 |
regexp/no-useless-two-nums-quantifier | disallow unnecessary {n,m} quantifier |
⭐🔧 |
regexp/optimal-lookaround-quantifier | disallow the alternatives of lookarounds that end with a non-constant quantifier | |
regexp/order-in-character-class | enforces elements order in character class | 🔧 |
regexp/prefer-character-class | enforce using character class | 🔧 |
regexp/prefer-d | enforce using \d |
⭐🔧 |
regexp/prefer-escape-replacement-dollar-char | enforces escape of replacement $ character ($$ ). |
|
regexp/prefer-named-backreference | enforce using named backreferences | 🔧 |
regexp/prefer-plus-quantifier | enforce using + quantifier |
⭐🔧 |
regexp/prefer-predefined-assertion | prefer predefined assertion over equivalent lookarounds | 🔧 |
regexp/prefer-quantifier | enforce using quantifier | 🔧 |
regexp/prefer-question-quantifier | enforce using ? quantifier |
⭐🔧 |
regexp/prefer-range | enforce using character class range | 🔧 |
regexp/prefer-regexp-exec | enforce that RegExp#exec is used instead of String#match if no global flag is provided |
|
regexp/prefer-regexp-test | enforce that RegExp#test is used instead of String#match and RegExp#exec |
🔧 |
regexp/prefer-star-quantifier | enforce using * quantifier |
⭐🔧 |
regexp/prefer-t | enforce using \t |
⭐🔧 |
regexp/prefer-unicode-codepoint-escapes | enforce use of unicode codepoint escapes | 🔧 |
regexp/prefer-w | enforce using \w |
⭐🔧 |
regexp/sort-flags | require regex flags to be sorted | 🔧 |
regexp/unicode-escape | enforce consistent usage of unicode escape or unicode codepoint escape | 🔧 |
See Settings.
Welcome contributing!
Please use GitHub's Issues/PRs.
npm test
runs tests and measures coverage.npm run update
runs in order to update readme and recommended configuration.npm run new [new rule name]
runs to create the files needed for the new rule.npm run docs:watch
starts the website locally.
See the LICENSE file for license rights and limitations (MIT).