我正在尝试找出创建正则规则的最佳方法,该规则适用于以下格式的IPv4和IPv6地址空间:
[2a00:1397:4:2a02::a1]:50434
129.13.252.47:13456
我很接近,但基本上,我需要匹配最后一个冒号字符(在端口之前),而不是匹配其余的行,因为我不想丢弃端口值。这个想法是最后一个冒号字符是分隔符。
我目前有以下正则表达式:[^:]+$
,它基本上是我的最后一个冒号字符,但也匹配端口值。我需要匹配停止在冒号角色。这可能吗?
答案 0 :(得分:2)
正则表达式((?::))(?:[0-9]+)$
将根据结束数字然后是collon进行反向查找。冒号(:)将是group(1)。
和this会对所有单独的部分进行分组:(.*)((?::))((?:[0-9]+))$
答案 1 :(得分:0)
仅用于数字尾部的正则表达式模式,必须在冒号后为 /:(\ d +)$ / gm
当您需要检测使用哪种ip6或ip4格式时,应使用更复杂的Regex模式,例如 /(:(\ d +)$)|(]:(\ d +)$)/ gm
[g]和[m]标志是可选的和冗余的,仅用于通过regexr.com进行调试。
在实际软件中,我使用正则表达式
RegEx.Create(
'(:(?<IPv4>\d+$))|(]:(?<IPv6>\d+)$)',
[roCompiled, roExplicitCapture]
);