mirror of
https://github.com/oven-sh/bun
synced 2026-02-11 11:29:02 +00:00
Make some regexes lazy
This commit is contained in:
@@ -25,29 +25,29 @@ const EventEmitter = require("node:events");
|
||||
// IPv4 Segment
|
||||
const v4Seg = "(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])";
|
||||
const v4Str = `(${v4Seg}[.]){3}${v4Seg}`;
|
||||
const IPv4Reg = new RegExp(`^${v4Str}$`);
|
||||
var IPv4Reg;
|
||||
|
||||
// IPv6 Segment
|
||||
const v6Seg = "(?:[0-9a-fA-F]{1,4})";
|
||||
const IPv6Reg = new RegExp(
|
||||
"^(" +
|
||||
`(?:${v6Seg}:){7}(?:${v6Seg}|:)|` +
|
||||
`(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` +
|
||||
`(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` +
|
||||
`(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` +
|
||||
`(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` +
|
||||
`(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` +
|
||||
`(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` +
|
||||
`(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` +
|
||||
")(%[0-9a-zA-Z-.:]{1,})?$",
|
||||
);
|
||||
var IPv6Reg;
|
||||
|
||||
function isIPv4(s) {
|
||||
return IPv4Reg.test(s);
|
||||
return (IPv4Reg ??= new RegExp(`^${v4Str}$`)).test(s);
|
||||
}
|
||||
|
||||
function isIPv6(s) {
|
||||
return IPv6Reg.test(s);
|
||||
return (IPv6Reg ??= new RegExp(
|
||||
"^(" +
|
||||
`(?:${v6Seg}:){7}(?:${v6Seg}|:)|` +
|
||||
`(?:${v6Seg}:){6}(?:${v4Str}|:${v6Seg}|:)|` +
|
||||
`(?:${v6Seg}:){5}(?::${v4Str}|(:${v6Seg}){1,2}|:)|` +
|
||||
`(?:${v6Seg}:){4}(?:(:${v6Seg}){0,1}:${v4Str}|(:${v6Seg}){1,3}|:)|` +
|
||||
`(?:${v6Seg}:){3}(?:(:${v6Seg}){0,2}:${v4Str}|(:${v6Seg}){1,4}|:)|` +
|
||||
`(?:${v6Seg}:){2}(?:(:${v6Seg}){0,3}:${v4Str}|(:${v6Seg}){1,5}|:)|` +
|
||||
`(?:${v6Seg}:){1}(?:(:${v6Seg}){0,4}:${v4Str}|(:${v6Seg}){1,6}|:)|` +
|
||||
`(?::((?::${v6Seg}){0,5}:${v4Str}|(?::${v6Seg}){1,7}|:))` +
|
||||
")(%[0-9a-zA-Z-.:]{1,})?$",
|
||||
)).test(s);
|
||||
}
|
||||
|
||||
function isIP(s) {
|
||||
|
||||
Reference in New Issue
Block a user