1. <?php 
  2. // literally from the ABNF in rfc3986 (thanks to 'WCP') 
  3. function validateIPv6($IP
  4. return preg_match('/\A 
  5. (?: 
  6. (?: 
  7. (?:[a-f0-9]{1,4}:){6} 
  8.  
  9. ::(?:[a-f0-9]{1,4}:){5} 
  10.  
  11. (?:[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){4} 
  12.  
  13. (?:(?:[a-f0-9]{1,4}:){0,1}[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){3} 
  14.  
  15. (?:(?:[a-f0-9]{1,4}:){0,2}[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){2} 
  16.  
  17. (?:(?:[a-f0-9]{1,4}:){0,3}[a-f0-9]{1,4})?::[a-f0-9]{1,4}: 
  18.  
  19. (?:(?:[a-f0-9]{1,4}:){0,4}[a-f0-9]{1,4})?:: 
  20. (?: 
  21. [a-f0-9]{1,4}:[a-f0-9]{1,4} 
  22.  
  23. (?:(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3} 
  24. (?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]) 
  25.  
  26. (?: 
  27. (?:(?:[a-f0-9]{1,4}:){0,5}[a-f0-9]{1,4})?::[a-f0-9]{1,4} 
  28.  
  29. (?:(?:[a-f0-9]{1,4}:){0,6}[a-f0-9]{1,4})?:: 
  30. )\Z/ix', 
  31. $IP 
  32. ); 
  33. ?> 
  34. 详细出处参考:http://www.jb51.net/article/22141.htm