PHP IPV6正则表达式验证代码

  

复制代码 代码如下:

  <?php

  // literally from the ABNF in rfc3986 (thanks to 'WCP')

  function validateIPv6($IP)

  {

  return preg_match('/\A

  (?:

  (?:

  (?:[a-f0-9]{1,4}:){6}

  ::(?:[a-f0-9]{1,4}:){5}

  (?:[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){4}

  (?:(?:[a-f0-9]{1,4}:){0,1}[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){3}

  (?:(?:[a-f0-9]{1,4}:){0,2}[a-f0-9]{1,4})?::(?:[a-f0-9]{1,4}:){2}

  (?:(?:[a-f0-9]{1,4}:){0,3}[a-f0-9]{1,4})?::[a-f0-9]{1,4}:

  (?:(?:[a-f0-9]{1,4}:){0,4}[a-f0-9]{1,4})?::

  )

  (?:

  [a-f0-9]{1,4}:[a-f0-9]{1,4}

  (?:(?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}

  (?:[0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])

  )

  (?:

  (?:(?:[a-f0-9]{1,4}:){0,5}[a-f0-9]{1,4})?::[a-f0-9]{1,4}

  (?:(?:[a-f0-9]{1,4}:){0,6}[a-f0-9]{1,4})?::

  )

  )\Z/ix',

  $IP

  );

  }

  ?>