IPアドレスに一致する次の正規表現があります:
(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
最後にポート番号を許可するように更新してください(ポート番号はオプションです)
前もって感謝します
男、それは混乱です。正規表現ですべてを実行しようとするよりも、検索パターンを単純化してから値を検証することをお勧めします。例えば、
private String findIP(String in) {
Matcher m = Pattern.compile("((\\d+\\.){3}\\d+):(\\d+)").matcher(in);
if (m.find()) {
String[] p = m.group(1).split("\\.");
for (int i = 0; i < 4; i++)
if (Integer.parseInt(p[i]) > 255) return null;
if (Integer.parseInt(m.group(3)) > 65535) return null;
return m.group(0);
}
return null;
}
おそらくすべてを考慮しているわけではありません (0 で始まるアドレス、負を返す parseInt など)。点線のクワッドとポートについて話している将来の読者。
(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]):[\d]{1,5}$