我在Angular/typescript中有一个要求,要为一个在URL中包含IP或主机名(FQDN)的集群端点构建一个正则表达式。
示例1-10.210.163.246/k8s/clusters/c-m-vftt4j5q
示例2-fg380g9-32-vip3-ocs.sample.company.com/k8s/clusters/c-m-8vcjbtwh
(不允许在末尾添加斜线)
我基本上附加了两个不同的正则表达式,一个用于IP/FQDN:
^(?:(?: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-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$
...另一个用于匹配URL的其余部分,如/k8s/clusters/c-m-vftt4j5q
^\/(([a-zA-Z0-9-]+)\/)+([a-zA-Z0-9-]+)$
我的组合正则表达式看起来像这样:
^((?:(?: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-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)+([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9]))[\/]{1}(([a-zA-Z0-9-]+)\/)+([a-zA-Z0-9-]+)$
但这与示例2匹配,而与示例1不匹配
我需要在这里修改什么?
1条答案
按热度按时间eufgjt7s1#
修改它以按照您的意图工作。
为此,我稍微修改了您的最后一个正则表达式
对于两个示例情况。
https://regex101.com/r/zT32K6/1
RegexFormat: