gpt4 book ai didi

java - 用于验证 InetSocketAddresses(ipv4/v6 + 端口地址)的正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:02 24 4
gpt4 key购买 nike

我正在寻找 ipv4 和 ipv6 的测试正则表达式 InetSocketAddress (即 IP 地址 + 端口号)。我对验证主机名不感兴趣。

它可以是两个正则表达式(一个用于 ipv4,一个用于 ipv6)或一个组合的正则表达式。

有没有人可以分享?

编辑

有关 ip4 格式的信息,请参阅 here , 有关 ipv6 格式的信息,请参阅 here .然后,端口号加上':'。

编辑 2要创建字符串表示,我将这样进行:

byte[] tmp = { 10, 1, 0, 0 };
InetSocketAddress isa = new InetSocketAddress(
InetAddress.getByAddress(tmp), 443);

返回:

/10.1.0.0:443

最佳答案

尝试在 InetSocketAddress.toString() 上使用正则表达式来执行此操作可能不是一个好主意。 (见上面问题的评论)

一种可能的替代方法是使用 URLURI以字符串格式打印地址,即much more standardized .


**编辑:**

另一方面,如果你想用正则表达式折磨自己......;-)

IPv4:

      Pattern: .*/([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+):([0-9]+)
Java constant: ".*/([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+):([0-9]+)"

仅处理点分四组格式地址。不检测无效地址。

IPv6:

      Pattern: .*/([0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+(%[a-zA-Z0-9]+)?):([0-9]+)
Java constant: ".*/([0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+(%[a-zA-Z0-9]+)?):([0-9]+)"

处理所有 8 个 16 位部分的 IPv6 地址。 (再次注意,这有效的唯一原因是因为 Java 中的 Inet6Address 实现似乎以非标准方式打印地址 - 可能因此它可以附加端口号并且没有歧义)不检测无效的 IPv6 地址。仅处理小写十六进制字符。使用大写或小写字母和/或数字处​​理区域/范围 ID(如果存在)。

我用 handy applet I found 测试了它们.

郑重声明,我仍然认为这是个坏主意。 ;-) 我不确定是否所有 Java 平台都会以这种方式打印地址。

关于java - 用于验证 InetSocketAddresses(ipv4/v6 + 端口地址)的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5747548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com