簡體   English   中英

簡單的Java正則表達式從封閉字符串中提取IP地址和端口

[英]Simple Java regex to extract IP address and port from enclosing string

考慮一對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%准確(即,即使它也匹配其他字符串)。

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

這是正則表達式。 第一組給你IP。 第三組為您提供端口號。 中間組給出分隔符ie /或:用於交替。 它可以被忽略。

使用commons驗證器

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM