eslint-plugin-regexp icon indicating copy to clipboard operation
eslint-plugin-regexp copied to clipboard

Applying fix for regexp/optimal-quantifier-concatenation break the regex logic

Open Eugeno opened this issue 1 year ago • 1 comments

Information:

  • ESLint version: 8.57.0
  • eslint-plugin-regexp version: 2.5.0

Description Current regex is /^(?!.*(?=.*-)(?=.*,)).*$/ (disallow usage of both comma and dash).

/^(?!.*(?=.*-)(?=.*,)).*$/.test('1,2-3'); // false ✓

I got 3 errors here, one of them: '.*' can be removed because it is already included by '.*'.(regexp/optimal-quantifier-concatenation). After applying the fix:

/^(?!.*(?=-)(?=.*,)).*$/.test('1,2-3'); // true ✗

Further autofixes give the same false positive result:

/^(?!.*(?=-).+,).*$/.test('1,2-3'); // true ✗

Eugeno avatar Apr 23 '24 10:04 Eugeno

Very good fine. Thanks for reporting.

The transformation:

/^(?!.*(?=.*-)(?=.*,)).*$/;
// to
/^(?!.*(?=-)(?=.*,)).*$/;

Is indeed incorrect. I think I messed one of its conditions, so this shouldn't be too hard to fix.

RunDevelopment avatar Apr 23 '24 14:04 RunDevelopment