简单的Java正则表达式从封闭字符串中提取IP地址和端口(Simple Java regex to

2019-10-22 17:54发布

考虑一对IPv4IPv6地址和端口,由任一分离/:例如

10.10.10.10:1234

该港口是可选的,所以像琴弦

10.10.10.10/
10.10.10.10:
10.10.10.10

也是有效的。 的地址/端口对之后可以是空格或逗号字符,这是更长的包围字符串的一部分。

这将是(不使用字符串操作功能)一个非常简单的正则表达式来提取在从封闭字符串单独字段的2个值?

例如,表达等

(?<address>[^\s,]+[^\s,:\.])((/|:)(?<port>\d*))?

在提取相同的字符串既地址和端口。

这里的目标是实现用最简单的正则表达式可以提取,即使不是100%准确(即,即使其他字符串,以及匹配)。

Answer 1:

([0-9.]*)(\/|:)([0-9]*)

这里是正则表达式。 第一组为您提供了IP。 第三组为您提供的端口号。 中间组给出了隔板即/或:用于交替。 它可以忽略不计。



Answer 2:

使用公共验证 :

InetAddressValidator validator = InetAddressValidator.getInstance();
if (validator.isValid(ipAddress) {
   // cool, isn't valid
}
throw new InvalidAddressException(ipAddress);


文章来源: Simple Java regex to extract IP address and port from enclosing string