@@ -14,21 +14,20 @@ export default () => {
14
14
'(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}' ;
15
15
16
16
const v6seg = '[a-fA-F\\d]{1,4}' ;
17
- const v6 = `
18
- (?:
19
- (?:${ v6seg } :){7}(?:${ v6seg } |:)| // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
20
- (?:${ v6seg } :){6}(?:${ v4 } |:${ v6seg } |:)| // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::1.2.3.4
21
- (?:${ v6seg } :){5}(?::${ v4 } |(?::${ v6seg } ){1,2}|:)| // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::7:1.2.3.4
22
- (?:${ v6seg } :){4}(?:(?::${ v6seg } ){0,1}:${ v4 } |(?::${ v6seg } ){1,3}|:)| // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::6:7:1.2.3.4
23
- (?:${ v6seg } :){3}(?:(?::${ v6seg } ){0,2}:${ v4 } |(?::${ v6seg } ){1,4}|:)| // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::5:6:7:1.2.3.4
24
- (?:${ v6seg } :){2}(?:(?::${ v6seg } ){0,3}:${ v4 } |(?::${ v6seg } ){1,5}|:)| // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::4:5:6:7:1.2.3.4
25
- (?:${ v6seg } :){1}(?:(?::${ v6seg } ){0,4}:${ v4 } |(?::${ v6seg } ){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4
26
- (?::(?:(?::${ v6seg } ){0,5}:${ v4 } |(?::${ v6seg } ){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4
27
- )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1
28
- `
29
- . replace ( / \s * \/ \/ .* $ / gm, '' )
30
- . replace ( / \n / g, '' )
31
- . trim ( ) ;
17
+
18
+ const v6List = [
19
+ `(?:${ v6seg } :){7}(?:${ v6seg } |:)` , // 1:2:3:4:5:6:7:: 1:2:3:4:5:6:7:8
20
+ `(?:${ v6seg } :){6}(?:${ v4 } |:${ v6seg } |:)` , // 1:2:3:4:5:6:: 1:2:3:4:5:6::8 1:2:3:4:5:6::8 1:2:3:4:5:6::
21
+ `(?:${ v6seg } :){5}(?::${ v4 } |(?::${ v6seg } ){1,2}|:)` , // 1:2:3:4:5:: 1:2:3:4:5::7:8 1:2:3:4:5::8 1:2:3:4:5::
22
+ `(?:${ v6seg } :){4}(?:(?::${ v6seg } ){0,1}:${ v4 } |(?::${ v6seg } ){1,3}|:)` , // 1:2:3:4:: 1:2:3:4::6:7:8 1:2:3:4::8 1:2:3:4::
23
+ `(?:${ v6seg } :){3}(?:(?::${ v6seg } ){0,2}:${ v4 } |(?::${ v6seg } ){1,4}|:)` , // 1:2:3:: 1:2:3::5:6:7:8 1:2:3::8 1:2:3::
24
+ `(?:${ v6seg } :){2}(?:(?::${ v6seg } ){0,3}:${ v4 } |(?::${ v6seg } ){1,5}|:)` , // 1:2:: 1:2::4:5:6:7:8 1:2::8 1:2::
25
+ `(?:${ v6seg } :){1}(?:(?::${ v6seg } ){0,4}:${ v4 } |(?::${ v6seg } ){1,6}|:)` , // 1:: 1::3:4:5:6:7:8 1::8 1::
26
+ `(?::(?:(?::${ v6seg } ){0,5}:${ v4 } |(?::${ v6seg } ){1,7}|:))` , // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::
27
+ ] ;
28
+ const v6Eth0 = `(?:%[0-9a-zA-Z]{1,})?` ; // %eth0 %1
29
+
30
+ const v6 = `(?:${ v6List . join ( '|' ) } )${ v6Eth0 } ` ;
32
31
33
32
// Pre-compile only the exact regexes because adding a global flag make regexes stateful
34
33
const v46Exact = new RegExp ( `(?:^${ v4 } $)|(?:^${ v6 } $)` ) ;
0 commit comments