2011-02-17 39 views
12

Estoy tratando de coincidir con una cadena que puede ser vacía o tener 1 o 2 números en ella, tales como los siguientes:expresiones regulares para una cadena de longitud 0-2

"" (vacío) "1 " " 23 "

La cadena con más números o caracteres no numéricos no debe coincidir. Mi conjetura más cercana es la expresión regular: "los números del 0 al 9 que ocurren 0 a 2 veces"

[0-9] {0,2}

que leí decir Sin embargo, en la práctica, me parece que la expresión regular también coincide con cadenas más largas como "333". ¿Cómo es posible restringir la longitud de la cadena en expresiones regulares?

+0

¿Qué idioma estás usando? – Donut

+1

C# es mi idioma de elección. –

Respuesta

36

Usar la siguiente expresión regular:

^[0-9]{0,2}$ 

Casi lo tenía - los ^ y $ personajes son anclas que coinciden con el comienzo y el final de la cadena, respectivamente.

Para una discusión más a fondo sobre los anclajes, consulte here:

[Anclas] No se encontró ningún carácter en absoluto. En cambio, coinciden con una posición antes, después o entre caracteres. Se pueden usar para "anclar" la coincidencia de expresiones regulares en una determinada posición.

5

Utilice los meta-caracteres de inicio y final de la cadena:

^[0-9]{0,2}$ 

Si no se utilicen, que coincide con cualquier parte de la cadena, y "12", que coincide, es parte de " 123 ".

6

Necesitas anchor la expresión regular:

^[0-9]{0,2}$ 

lo contrario, la expresión regular estará feliz de que coincida con subcadenas.

Cuestiones relacionadas