Friday, October 24, 2008

Regular expression para IPv4 y IPv6

Estos son los patrones para pasear con expresiones regulares los protocolos ipv4 y ipv6. Esto incluyes los netblock de los respectivos protocolos. Para el protocolo de ipv4 este patron no aceptas las direcciones reservadas (o especiales) como por ejemplo: 127.0.0.1.

Para el el protocolo ipv6 si permite direcciones especiales (en este caso en muy complejo agregar la validaciones de estas).

IPv4
^(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)\.(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)\.(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)\.(1\d{0,2}|2(?:[0-4]\d{0,1}|[6789]|5[0-5]?)?|[3-9]\d?|0)(\/(?:[012]\d?|3[012]?)){0,1}$

IPv6
^[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}((\:)?|(\::)?)[a-f0-9]{0,4}(\/(?:[01236]\d?|1\d[0-8]?)){0,1}$