IPv6地址的正则表达式,有没有更简单的方式

南湖船老大 发布于 2013/04/14 00:36
阅读 3K+
收藏 0

IPv6地址:

^\s*((([0-9A-Fa-f]{1,4}:){7}(([0-9A-Fa-f]{1,4})|:))|(([0-9A-Fa-f]{1,4}:){6}(:|((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})|(:[0-9A-Fa-f]{1,4})))|(([0-9A-Fa-f]{1,4}:){5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){4}(:[0-9A-Fa-f]{1,4}){0,1}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){3}(:[0-9A-Fa-f]{1,4}){0,2}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:){2}(:[0-9A-Fa-f]{1,4}){0,3}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(([0-9A-Fa-f]{1,4}:)(:[0-9A-Fa-f]{1,4}){0,4}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(:(:[0-9A-Fa-f]{1,4}){0,5}((:((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})?)|((:[0-9A-Fa-f]{1,4}){1,2})))|(((25[0-5]|2[0-4]\d|[01]?\d{1,2})(\.(25[0-5]|2[0-4]\d|[01]?\d{1,2})){3})))(%.+)?\s*$

加载中
0
陨落人间
陨落人间

PHP可以用 FILTER_VALIDATE_IP 过滤器


<?php $ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";

 if(!filter_var($ip,FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) 
 {

 echo "IP is not valid"; 

 } else {

 echo "IP is valid"; 

 } 

?>

0
OSC老司机
OSC老司机

这是正则啊

0
LuFang
LuFang
JDK里自带就有判断地址是否为IPv6的方法..
0
h2ero
h2ero
貌似没有,上一次看到这个我也吓了跳。
0
南湖船老大
南湖船老大

引用来自“陨落人间”的答案

PHP可以用 FILTER_VALIDATE_IP 过滤器


<?php $ip = "2001:0db8:85a3:08d3:1319:8a2e:0370:7334";

 if(!filter_var($ip,FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) 
 {

 echo "IP is not valid"; 

 } else {

 echo "IP is valid"; 

 } 

?>

这个可以
0
公孙二狗
公孙二狗
为了正则而正则,写这么长,容易出错,应该是使用合适的方式去解决问题,而不是一黑到底
0
L5_Railgun
L5_Railgun
这是蛋疼的写法
返回顶部
顶部