/lib/src/org/apache/http/conn/util/InetAddressUtils.java

http://github.com/onedanshow/Screen-Courter · Java · 73 lines · 29 code · 13 blank · 31 comment · 1 complexity · 94378f1180067edb32e5b4dba23c2277 MD5 · raw file

  1. /*
  2. * ====================================================================
  3. * Licensed to the Apache Software Foundation (ASF) under one
  4. * or more contributor license agreements. See the NOTICE file
  5. * distributed with this work for additional information
  6. * regarding copyright ownership. The ASF licenses this file
  7. * to you under the Apache License, Version 2.0 (the
  8. * "License"); you may not use this file except in compliance
  9. * with the License. You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing,
  14. * software distributed under the License is distributed on an
  15. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  16. * KIND, either express or implied. See the License for the
  17. * specific language governing permissions and limitations
  18. * under the License.
  19. * ====================================================================
  20. *
  21. * This software consists of voluntary contributions made by many
  22. * individuals on behalf of the Apache Software Foundation. For more
  23. * information on the Apache Software Foundation, please see
  24. * <http://www.apache.org/>.
  25. *
  26. */
  27. package org.apache.http.conn.util;
  28. import java.util.regex.Pattern;
  29. import org.apache.http.annotation.Immutable;
  30. /**
  31. * A collection of utilities relating to InetAddresses.
  32. *
  33. * @since 4.0
  34. */
  35. @Immutable
  36. public class InetAddressUtils {
  37. private InetAddressUtils() {
  38. }
  39. private static final Pattern IPV4_PATTERN =
  40. Pattern.compile(
  41. "^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}$");
  42. private static final Pattern IPV6_STD_PATTERN =
  43. Pattern.compile(
  44. "^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$");
  45. private static final Pattern IPV6_HEX_COMPRESSED_PATTERN =
  46. Pattern.compile(
  47. "^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$");
  48. public static boolean isIPv4Address(final String input) {
  49. return IPV4_PATTERN.matcher(input).matches();
  50. }
  51. public static boolean isIPv6StdAddress(final String input) {
  52. return IPV6_STD_PATTERN.matcher(input).matches();
  53. }
  54. public static boolean isIPv6HexCompressedAddress(final String input) {
  55. return IPV6_HEX_COMPRESSED_PATTERN.matcher(input).matches();
  56. }
  57. public static boolean isIPv6Address(final String input) {
  58. return isIPv6StdAddress(input) || isIPv6HexCompressedAddress(input);
  59. }
  60. }