-3

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])$

最後にポート番号を許可するように更新してください(ポート番号はオプションです)

前もって感謝します

4

2 に答える 2

1

男、それは混乱です。正規表現ですべてを実行しようとするよりも、検索パターンを単純化してから値を検証することをお勧めします。例えば、

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 など)。点線のクワッドとポートについて話している将来の読者。

于 2013-03-24T15:51:17.740 に答える
0
(([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}$
于 2013-03-24T11:29:33.287 に答える