Angular/TypeScript中Kubernetes集群端点正则表达式匹配问题
解决Kubernetes集群端点URL正则匹配问题
正确的正则表达式
针对你的需求,以下正则可同时匹配带IP或FQDN的合法K8s集群端点URL,且严格禁止末尾带斜杠:
const k8sEndpointRegex = /^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)|(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,})\/k8s\/clusters\/[a-zA-Z0-9-]+$/;
正则说明
- IP匹配部分:采用标准IPv4校验规则,确保只匹配0.0.0.0到255.255.255.255之间的合法IP
- FQDN匹配部分:支持包含字母、数字、连字符的多级域名,顶级域名长度至少为2
- 路径部分:固定匹配
/k8s/clusters/后接由字母、数字、连字符组成的集群ID - 末尾限制:通过
$锚定结尾,确保URL末尾无额外斜杠或字符
TypeScript使用示例
// 测试合法示例 const validIpUrl = '10.210.163.246/k8s/clusters/c-m-vftt4j5q'; const validFqdnUrl = 'fg380g9-32-vip3-ocs.sample.company.com/k8s/clusters/c-m-8vcjbtwh'; // 测试非法示例(末尾带斜杠) const invalidUrl = '10.210.163.246/k8s/clusters/c-m-vftt4j5q/'; console.log(k8sEndpointRegex.test(validIpUrl)); // 输出 true console.log(k8sEndpointRegex.test(validFqdnUrl)); // 输出 true console.log(k8sEndpointRegex.test(invalidUrl)); // 输出 false
问题原因推测
大概率是以下两种情况之一:
- IP正则规则错误:比如使用了过于简单的
\d+\.\d+\.\d+\.\d+,若正则中存在意外的字符转义或分组限制,会导致合法IP匹配失败 - 合并方式不当:你可能将IP+路径、FQDN+路径拆分为两个独立的正则分支,而非将IP/FQDN作为一个可选组后统一拼接路径,这种写法容易因分支中的细微差异导致IP分支匹配失败
内容的提问来源于stack exchange,提问作者appu_coder
相关产品推荐
相关产品推荐

