Ste*_*n C 19
我知道您可能被迫使用正则表达式.但是,如果可能,最好避免使用正则表达式执行此任务,并使用Java库类来进行验证.
如果您想一起进行验证和DNS查找,那么这InetAddress.getByName(String)是一个不错的选择.这将一次性处理DNS,IPv4和IPv6,并返回一个InetAddress包含DNS名称(如果提供)和IPv4或IPv6地址的整齐包装的实例.
如果你只想进行语法验证,那么Apache commons有几个应该完成工作的类:DomainValidator和InetAddressValidator.
Guava有一个新类HostSpecifier.它甚至会验证主机名(如果它是主机名)以有效的"公共后缀"(例如".com",".co.uk"等)结尾,基于最新的mozilla公共后缀名单.这是你不想用手工制作的正则表达式尝试的东西!