lunes, 3 de mayo de 2010

Expresión regular para CIDR

Me ha dado por ahí, y he sacado la expresión regular para una dirección IPv4 en notación CIDR.

Hay mucha gente por ahí que usa

([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\/([0-9][1,3})


Pero no es correcta. La buena es ésta:

((0|1[0-9]{0,2}|2([0-4][0-9]?|5[0-5]?|[6-9])|[3-9][0-9]?)\.){3}(0|1[0-9]{0,2}|2([0-4][0-9]?|5[0-5]?|[6-9])|[3-9][0-9]?)/(0|[1-2][0-9]?|3[0-2]?)


Si la vas a compilar en C, no olvides doblar las barras invertidas.