From 5163d316228f73289b83e94e65093cfbcbec4c9f Mon Sep 17 00:00:00 2001 From: BennyBPB Date: Mon, 19 Feb 2024 23:30:37 +0100 Subject: [PATCH 1/2] fix(id-class-value): fix ineficient regex Replacing the capturing group quantifier ( ... )* with a non-capturing group quantifier (?: ... )* to reduce the risk of exponential backtracking. #1147 --- src/core/rules/id-class-value.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/rules/id-class-value.ts b/src/core/rules/id-class-value.ts index 3293cce57..95194717a 100644 --- a/src/core/rules/id-class-value.ts +++ b/src/core/rules/id-class-value.ts @@ -17,7 +17,7 @@ export default { 'The id and class attribute values must be in lowercase and split by a dash.', }, hump: { - regId: /^[a-z][a-zA-Z\d]*([A-Z][a-zA-Z\d]*)*$/, + regId: /^[a-z][a-zA-Z\d]*(?:[A-Z][a-zA-Z\d]*)*$/, message: 'The id and class attribute values must meet the camelCase style.', }, From ea7ea2d9565b6a41d0f5a7e19bb1c77fbafd0224 Mon Sep 17 00:00:00 2001 From: BennyBPB Date: Tue, 20 Feb 2024 08:20:19 +0100 Subject: [PATCH 2/2] fix(id-class-value): fix inefficient regex The positive lookahead assertion `(?= ...)` is used to ensure that the check occurs after the first lowercase letter and all subsequent characters have been verified to resolve the issue of reference backtracking #1147 --- src/core/rules/id-class-value.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/rules/id-class-value.ts b/src/core/rules/id-class-value.ts index 95194717a..0f212f8dc 100644 --- a/src/core/rules/id-class-value.ts +++ b/src/core/rules/id-class-value.ts @@ -17,7 +17,7 @@ export default { 'The id and class attribute values must be in lowercase and split by a dash.', }, hump: { - regId: /^[a-z][a-zA-Z\d]*(?:[A-Z][a-zA-Z\d]*)*$/, + regId: /^[a-z](?=[a-zA-Z\d]*$)(?:[a-zA-Z\d]*(?:[A-Z][a-zA-Z\d]*)*)?$/, message: 'The id and class attribute values must meet the camelCase style.', },