flex: Addresses

 
 A.4.4 Addresses
 ---------------
 
 IPv4 Address
      dec-octet     [0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]
      IPv4address   {dec-octet}\.{dec-octet}\.{dec-octet}\.{dec-octet}
 
 IPv6 Address
      h16           [0-9A-Fa-f]{1,4}
      ls32          {h16}:{h16}|{IPv4address}
      IPv6address   ({h16}:){6}{ls32}|
                    ::({h16}:){5}{ls32}|
                    ({h16})?::({h16}:){4}{ls32}|
                    (({h16}:){0,1}{h16})?::({h16}:){3}{ls32}|
                    (({h16}:){0,2}{h16})?::({h16}:){2}{ls32}|
                    (({h16}:){0,3}{h16})?::{h16}:{ls32}|
                    (({h16}:){0,4}{h16})?::{ls32}|
                    (({h16}:){0,5}{h16})?::{h16}|
                    (({h16}:){0,6}{h16})?::
 
      See RFC 2373 (http://www.ietf.org/rfc/rfc2373.txt) for details.
      Note that you have to fold the definition of 'IPv6address' into one
      line and that it also matches the "unspecified address" "::".
 
 URI
      '(([^:/?#]+):)?("//"([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?'
 
      This pattern is nearly useless, since it allows just about any
      character to appear in a URI, including spaces and control
      characters.  See RFC 2396 (http://www.ietf.org/rfc/rfc2396.txt) for
      details.