From c25cb3bdb1ce70bad76433afcae2ab47d7533cc9 Mon Sep 17 00:00:00 2001 From: Joshua David Date: Sat, 16 Nov 2019 19:53:06 +1100 Subject: [PATCH] fix regex-shorthand issues --- rules/custom-error-definition.js | 2 +- rules/escape-case.js | 4 ++-- rules/expiring-todo-comments.js | 8 ++++---- rules/import-index.js | 2 +- rules/no-abusive-eslint-disable.js | 2 +- rules/number-literal-case.js | 2 +- rules/prevent-abbreviations.js | 2 +- rules/throw-new-error.js | 2 +- rules/utils/is-valid-variable-name.js | 2 +- test/filename-case.js | 4 ++-- test/package.js | 4 ++-- test/prefer-starts-ends-with.js | 4 ++-- 12 files changed, 19 insertions(+), 19 deletions(-) diff --git a/rules/custom-error-definition.js b/rules/custom-error-definition.js index 2661fc64cd..e2b4ce56cf 100644 --- a/rules/custom-error-definition.js +++ b/rules/custom-error-definition.js @@ -4,7 +4,7 @@ const getDocumentationUrl = require('./utils/get-documentation-url'); const MESSAGE_ID_INVALID_EXPORT = 'invalidExport'; -const nameRegexp = /^(?:[A-Z][a-z\d]*)*Error$/; +const nameRegexp = /^(?:[A-Z][\da-z]*)*Error$/; const getClassName = name => upperfirst(name).replace(/(error|)$/i, 'Error'); diff --git a/rules/escape-case.js b/rules/escape-case.js index 110c0645f3..7fafdb7f68 100644 --- a/rules/escape-case.js +++ b/rules/escape-case.js @@ -6,8 +6,8 @@ const { const getDocumentationUrl = require('./utils/get-documentation-url'); -const escapeWithLowercase = /((?:^|[^\\])(?:\\\\)*)\\(x[a-f\d]{2}|u[a-f\d]{4}|u{(?:[a-f\d]+)})/; -const escapePatternWithLowercase = /((?:^|[^\\])(?:\\\\)*)\\(x[a-f\d]{2}|u[a-f\d]{4}|u{(?:[a-f\d]+)}|c[a-z])/; +const escapeWithLowercase = /((?:^|[^\\])(?:\\\\)*)\\(x[\da-f]{2}|u[\da-f]{4}|u{[\da-f]+})/; +const escapePatternWithLowercase = /((?:^|[^\\])(?:\\\\)*)\\(x[\da-f]{2}|u[\da-f]{4}|u{[\da-f]+}|c[a-z])/; const hasLowercaseCharacter = /[a-z]+/; const message = 'Use uppercase characters for the value of the escape sequence.'; diff --git a/rules/expiring-todo-comments.js b/rules/expiring-todo-comments.js index cb2b70c38b..40c5f3e1ce 100644 --- a/rules/expiring-todo-comments.js +++ b/rules/expiring-todo-comments.js @@ -26,9 +26,9 @@ const packageDependencies = { ...packageJson.devDependencies }; -const DEPENDENCY_INCLUSION_RE = /^[+|-]\s*@?[\S+]\/?\S+/; -const VERSION_COMPARISON_RE = /^(@?[\S+]\/?\S+)@(>|>=)([\d]+(\.\d+){0,2}(-[\da-z-]+(\.[\da-z-]+)*)?(\+[\da-z-]+(\.[\da-z-]+)*)?)/i; -const PKG_VERSION_RE = /^(>|>=)([\d]+(\.\d+){0,2}(-[\da-z-]+(\.[\da-z-]+)*)?(\+[\da-z-]+(\.[\da-z-]+)*)?)\s*$/; +const DEPENDENCY_INCLUSION_RE = /^[+-]\s*@?\S+\/?\S+/; +const VERSION_COMPARISON_RE = /^(@?\S\/?\S+)@(>|>=)(\d+(\.\d+){0,2}(-[\d\-a-z]+(\.[\d\-a-z]+)*)?(\+[\d\-a-z]+(\.[\d\-a-z]+)*)?)/i; +const PKG_VERSION_RE = /^(>|>=)(\d+(\.\d+){0,2}(-[\d-a-z]+(\.[\d-a-z]+)*)?(\+[\d-a-z]+(\.[\d-a-z]+)*)?)\s*$/; const ISO8601_DATE = /(\d{4})-(\d{2})-(\d{2})/; function parseTodoWithArguments(string, {terms}) { @@ -40,7 +40,7 @@ function parseTodoWithArguments(string, {terms}) { return false; } - const TODO_ARGUMENT_RE = /\[([^}]+)\]/i; + const TODO_ARGUMENT_RE = /\[([^}]+)]/i; const result = TODO_ARGUMENT_RE.exec(string); if (!result) { diff --git a/rules/import-index.js b/rules/import-index.js index 7dd341d301..b051f81c97 100644 --- a/rules/import-index.js +++ b/rules/import-index.js @@ -1,7 +1,7 @@ 'use strict'; const getDocumentationUrl = require('./utils/get-documentation-url'); -const regexp = /^(@.*?\/.*?|[./]+?.*?)(?:\/(\.|(?:index(?:\.js)?))?)$/; +const regexp = /^(@.*?\/.*?|[./]+?.*?)\/(\.|(?:index(?:\.js)?))?$/; const isImportingIndex = value => regexp.test(value); const normalize = value => value.replace(regexp, '$1'); diff --git a/rules/no-abusive-eslint-disable.js b/rules/no-abusive-eslint-disable.js index 5d326254b6..565e67362e 100644 --- a/rules/no-abusive-eslint-disable.js +++ b/rules/no-abusive-eslint-disable.js @@ -1,7 +1,7 @@ 'use strict'; const getDocumentationUrl = require('./utils/get-documentation-url'); -const disableRegex = /^eslint-disable(-next-line|-line)?($|(\s+(@[\w-]+\/(?:[\w-]+\/)?)?[\w-]+)?)/; +const disableRegex = /^eslint-disable(-next-line|-line)?($|(\s+(@(?:[\w-]+\/){1,2})?[\w-]+)?)/; const create = context => ({ Program: node => { diff --git a/rules/number-literal-case.js b/rules/number-literal-case.js index 75a9a515be..6a5c044480 100644 --- a/rules/number-literal-case.js +++ b/rules/number-literal-case.js @@ -2,7 +2,7 @@ const getDocumentationUrl = require('./utils/get-documentation-url'); const fix = value => { - if (!/^0[a-zA-Z]/.test(value)) { + if (!/^0[A-Za-z]/.test(value)) { return value; } diff --git a/rules/prevent-abbreviations.js b/rules/prevent-abbreviations.js index f88bb041a1..8c4e43123b 100644 --- a/rules/prevent-abbreviations.js +++ b/rules/prevent-abbreviations.js @@ -274,7 +274,7 @@ const getNameReplacements = (name, options, limit = 3) => { } // Split words - const words = name.split(/(?=[^a-z])|(?<=[^a-zA-Z])/).filter(Boolean); + const words = name.split(/(?=[^a-z])|(?<=[^A-Za-z])/).filter(Boolean); let hasReplacements = false; const combinations = words.map(word => { diff --git a/rules/throw-new-error.js b/rules/throw-new-error.js index 7d7dc12e83..075f9d38a7 100644 --- a/rules/throw-new-error.js +++ b/rules/throw-new-error.js @@ -1,7 +1,7 @@ 'use strict'; const getDocumentationUrl = require('./utils/get-documentation-url'); -const customError = /^(?:[A-Z][a-z\d]*)*Error$/; +const customError = /^(?:[A-Z][\da-z]*)*Error$/; const create = context => ({ ThrowStatement: node => { diff --git a/rules/utils/is-valid-variable-name.js b/rules/utils/is-valid-variable-name.js index 3ea38158e7..772fd9b52c 100644 --- a/rules/utils/is-valid-variable-name.js +++ b/rules/utils/is-valid-variable-name.js @@ -1,3 +1,3 @@ 'use strict'; -module.exports = name => /^[a-z$_][a-z$_\d]*$/i.test(name); +module.exports = name => /^[$_a-z][\w$]*$/i.test(name); diff --git a/test/filename-case.js b/test/filename-case.js index c5e04ff9bc..1738024942 100644 --- a/test/filename-case.js +++ b/test/filename-case.js @@ -136,13 +136,13 @@ ruleTester.run('filename-case', rule, { {case: 'camelCase', ignore: ['\\[FOOBAR\\]\\.js']} ]), testCaseWithOptions('src/foo/[FOOBAR].js', undefined, [ - {case: 'camelCase', ignore: [/\[FOOBAR\]\.js/]} + {case: 'camelCase', ignore: [/\[FOOBAR]\.js/]} ]), testCaseWithOptions('src/foo/{FOOBAR}.js', undefined, [ {case: 'snakeCase', ignore: ['\\{FOOBAR\\}\\.js']} ]), testCaseWithOptions('src/foo/{FOOBAR}.js', undefined, [ - {case: 'snakeCase', ignore: [/\{FOOBAR\}\.js/]} + {case: 'snakeCase', ignore: [/{FOOBAR}\.js/]} ]), testCaseWithOptions('src/foo/foo.js', undefined, [ {case: 'kebabCase', ignore: ['^(F|f)oo']} diff --git a/test/package.js b/test/package.js index c189501445..b8d43d747c 100644 --- a/test/package.js +++ b/test/package.js @@ -55,7 +55,7 @@ test('Every rule is defined in readme.md usage and list of rules in alphabetical const readme = await pify(fs.readFile)('readme.md', 'utf8'); let usageRules; try { - const usageRulesMatch = /## Usage.*?"rules": (\{.*?\})/ms.exec(readme); + const usageRulesMatch = /## Usage.*?"rules": ({.*?})/ms.exec(readme); t.truthy(usageRulesMatch, 'List of rules should be defined in readme.md ## Usage'); usageRules = JSON.parse(usageRulesMatch[1]); } catch (_) {} @@ -65,7 +65,7 @@ test('Every rule is defined in readme.md usage and list of rules in alphabetical const rulesMatch = /## Rules(.*?)## Recommended config/ms.exec(readme); t.truthy(rulesMatch, 'List of rules should be defined in readme.md in ## Rules before ## Recommended config'); const rulesText = rulesMatch[1]; - const re = /- \[(.*?)\]\((.*?)\) - (.*)\n/gm; + const re = /- \[(.*?)]\((.*?)\) - (.*)\n/gm; const rules = []; let match; do { diff --git a/test/prefer-starts-ends-with.js b/test/prefer-starts-ends-with.js index 390417c3aa..e90aa6e170 100644 --- a/test/prefer-starts-ends-with.js +++ b/test/prefer-starts-ends-with.js @@ -24,8 +24,8 @@ const validRegex = [ /^foo$/, /^foo+/, /foo+$/, - /^[f,a]/, - /[f,a]$/, + /^[,af]/, + /[,af]$/, /^\w/, /\w$/, /^foo./,