eslint-plugin-regexp
eslint-plugin-regexp copied to clipboard
Applying fix for regexp/optimal-quantifier-concatenation break the regex logic
Information:
- ESLint version: 8.57.0
eslint-plugin-regexpversion: 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 ✗
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.