我的正则表达式不那么强。我要解决的问题是使用Regex验证Ipv6地址,并将前导0视为无效地址。
例如:
以此类推
我有这个正则表达式:
val ipv6 = Pattern.compile("^(((?=(?>.*?::)(?!.*::)))(::)?(0{0,1}|[1-9A-F]{1,4}::?){0,5}"
+ "|([0-9A-F]{1,4}:){6})(\\2([0-9A-F]{1,4}(::?|$)){0,2}|((25[0-5]"
+ "|(2[0-4]|1\\d|[1-9])?\\d)(\\.|$)){4}|[0-9A-F]{1,4}:[0-9A-F]{1,"
+ "4})(?<![^:]:|\\.)\\z")
未转义的正则表达式(带有单个反斜杠,没有换行符),用于测试:
^(((?=(?>.*?::)(?!.*::)))(::)?(0{0,1}|[1-9A-F]{1,4}::?){0,5}|([0-9A-F]{1,4}:){6})(\2([0-9A-F]{1,4}(::?|$)){0,2}|((25[0-5]|(2[0-4]|1\d|[1-9])?\d)(\.|$)){4}|[0-9A-F]{1,4}:[0-9A-F]{1,4})(?<![^:]:|\.)\z
仍然认为上述地址有效,如何修改它以使对前导0的验证无效?