2010-05-06 14 views

Respuesta

4

Tener una mirada here:

000..255:  ^([01][0-9][0-9]|2[0-4][0-9]|25[0-5])$ 
0 or 000..255: ^([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5])$ 
3

La solución más simple sería agarrar el número, convertir a un entero y luego pruebe que su valor se < = 255. Pero si realmente, realmente querer una expresión regular para hacerlo, entonces esto funcionaría:

^([0-9]{1,2}|1[0-9]{1,2}|2[0-4][0-9]|25[0-5])$ 

Editar fijo puede suponer que d no funciona en todas las situaciones Para ser sincero, esta es la razón por la que debería analizar la cadena en un entero y probar que el valor entero es < = 255.

+1

Eso ** ** no coincide con 150 a 199 btw – YOU

+0

S.Mark: Actualizado mi respuesta, gracias :) –

1

En realidad, solo debe coincidir con 0-999 y normalizar los valores después, pero ... .

/(25[0-5])|(2[0-4][0-9])|(1[0-9][0-9])|([0-9][0-9])|([0-9]))/ 
+0

O simplemente atrapa cualquier número entero con/(\ d +) / –

16

lo haría:

$n >= 0 && $n <= 255 

expresiones regulares son buenos, pero que se pueden evitar en casos como estos.

2

primera partidos de grupo 0-99, segundo uno 100-199, 200-249 tercera, cuarta 250-255

/[0-9]{1,2}|1[0-9]{2}|2[0-4][0-9]|25[0-5]/ 
Cuestiones relacionadas