@@ -23,8 +23,8 @@ const { Duplex } = require("node:stream");
23
23
const EventEmitter = require ( "node:events" ) ;
24
24
25
25
// IPv4 Segment
26
- const v4Seg = "(?:[0-9]|[1-9 ][0-9]|1[0-9][0-9]|2[0-4 ][0-9]|25 [0-5 ])" ;
27
- const v4Str = `(${ v4Seg } [.] ){3}${ v4Seg } ` ;
26
+ const v4Seg = "(?:25 [0-5]|2[0-4 ][0-9]|1[0-9][0-9]|[1-9 ][0-9]|[0-9 ])" ;
27
+ const v4Str = `(?: ${ v4Seg } \\. ){3}${ v4Seg } ` ;
28
28
var IPv4Reg ;
29
29
30
30
// IPv6 Segment
@@ -37,16 +37,16 @@ function isIPv4(s) {
37
37
38
38
function isIPv6 ( s ) {
39
39
return ( IPv6Reg ??= new RegExp (
40
- "^(" +
40
+ "^(?: " +
41
41
`(?:${ v6Seg } :){7}(?:${ v6Seg } |:)|` +
42
42
`(?:${ v6Seg } :){6}(?:${ v4Str } |:${ v6Seg } |:)|` +
43
- `(?:${ v6Seg } :){5}(?::${ v4Str } |(:${ v6Seg } ){1,2}|:)|` +
44
- `(?:${ v6Seg } :){4}(?:(: ${ v6Seg } ){0,1}:${ v4Str } |(:${ v6Seg } ){1,3}|:)|` +
45
- `(?:${ v6Seg } :){3}(?:(: ${ v6Seg } ){0,2}:${ v4Str } |(:${ v6Seg } ){1,4}|:)|` +
46
- `(?:${ v6Seg } :){2}(?:(: ${ v6Seg } ){0,3}:${ v4Str } |(:${ v6Seg } ){1,5}|:)|` +
47
- `(?:${ v6Seg } :){1}(?:(: ${ v6Seg } ){0,4}:${ v4Str } |(:${ v6Seg } ){1,6}|:)|` +
48
- `(?::((?::${ v6Seg } ){0,5}:${ v4Str } |(?::${ v6Seg } ){1,7}|:))` +
49
- ")(%[0-9a-zA-Z-.:]{1,})?$" ,
43
+ `(?:${ v6Seg } :){5}(?::${ v4Str } |(?: :${ v6Seg } ){1,2}|:)|` +
44
+ `(?:${ v6Seg } :){4}(?:(?:: ${ v6Seg } ){0,1}:${ v4Str } |(?: :${ v6Seg } ){1,3}|:)|` +
45
+ `(?:${ v6Seg } :){3}(?:(?:: ${ v6Seg } ){0,2}:${ v4Str } |(?: :${ v6Seg } ){1,4}|:)|` +
46
+ `(?:${ v6Seg } :){2}(?:(?:: ${ v6Seg } ){0,3}:${ v4Str } |(?: :${ v6Seg } ){1,5}|:)|` +
47
+ `(?:${ v6Seg } :){1}(?:(?:: ${ v6Seg } ){0,4}:${ v4Str } |(?: :${ v6Seg } ){1,6}|:)|` +
48
+ `(?::(?: (?::${ v6Seg } ){0,5}:${ v4Str } |(?::${ v6Seg } ){1,7}|:))` +
49
+ ")(?: %[0-9a-zA-Z-.:]{1,})?$" ,
50
50
) ) . test ( s ) ;
51
51
}
52
52
0 commit comments