regex 包含具有IP或FQDN的Kubernetes集群端点的正则表达式

eblbsuwk  于 2023-06-25  发布在  Kubernetes
关注(0)|答案(1)|浏览(110)

我在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不匹配
我需要在这里修改什么?

eufgjt7s

eufgjt7s1#

修改它以按照您的意图工作。
为此,我稍微修改了您的最后一个正则表达式
对于两个示例情况。

/^((?:(?: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-z0-9-]*[A-Za-z0-9]))\/(([a-zA-Z0-9-]+)\/)+([a-zA-Z0-9-]+)$/

https://regex101.com/r/zT32K6/1
RegexFormat:

^ 
(                                               # (1 start)
  (?:
    (?:
      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]? 
  )
| (                                               # (2 start)
    (                                               # (3 start)
      [a-zA-Z0-9] 
    | [a-zA-Z0-9] [a-zA-Z0-9-]* [a-zA-Z0-9] 
    )                                               # (3 end)
    \. 
  )+                                              # (2 end)
  ( [A-Za-z] [A-Za-z0-9-]* [A-Za-z0-9] )          # (4)
)                                               # (1 end)
/
(                                               # (5 start)
  ( [a-zA-Z0-9-]+ )                               # (6)
  /
)+                                              # (5 end)
( [a-zA-Z0-9-]+ )                               # (7)
$

相关问题