Skip to content

Commit 29842b4

Browse files
Improve regex
Co-authored-by: FUJINAMI Hiroya <[email protected]>
1 parent 1d451a6 commit 29842b4

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
export default function semverRegex() {
2-
return /(?<=^v?|\sv?)(?:(?:0|[1-9]\d{0,9}?)\.){2}(?:0|[1-9]\d{0,9})(?:-(?:--?|0|[1-9]\d*|\d*[a-z]+\d*)){0,100}(?=$| |\+|\.)(?:(?<=-\S+)(?:\.(?:--?|[\da-z-]*[a-z-]\d*|0|[1-9]\d*)){1,100}?)?(?!\.)(?:\+(?:[\da-z]\.?-?){1,100}?(?!\w))?(?!\+)/gi;
2+
return /(?<=^v?|\sv?)(?:(?:0|[1-9]\d{0,9}?)\.){2}(?:0|[1-9]\d{0,9})(?:-(?:--+)?(?:0|[1-9]\d*|\d*[a-z]+\d*)){0,100}(?=$| |\+|\.)(?:(?<=-\S+)(?:\.(?:--?|[\da-z-]*[a-z-]\d*|0|[1-9]\d*)){1,100}?)?(?!\.)(?:\+(?:[\da-z]\.?-?){1,100}?(?!\w))?(?!\+)/gi;
33
}

test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,4 +226,12 @@ test('invalid version does not cause catatrophic backtracking', t => {
226226
const difference = Date.now() - start;
227227
t.true(difference < 50, `Execution time: ${difference}`);
228228
}
229+
230+
for (let index = 1; index <= 30; index++) {
231+
const start = Date.now();
232+
const fixture = `0.0.1--${'--'.repeat(index)}\u0000`;
233+
semverRegex().test(fixture);
234+
const difference = Date.now() - start;
235+
t.true(difference < 50, `Execution time: ${difference}`);
236+
}
229237
});

0 commit comments

Comments
 (0)