2012-05-03 18 views
17

Ayúdenos con la coincidencia de RegEx adecuada. Cualquier 2 letras seguidas por cualquier combinación de 6 números enteros.Patrón de RegEx dos letras seguidas de seis números

These would be valid: 
RJ123456 
PY654321 
DD321234 

These would not 
DDD12345 
12DDD123 
+0

¿Qué pasa con "ABC1234567"; ¿Podría ocurrir alguna vez? – Phrogz

+0

No habría un caso para más de dos letras o 6 números. – Fergus

+3

¿Los "números enteros" siempre serán los números arábigos occidentales '0-9', o ​​habrá alguna vez [otros dígitos] (http://en.wikipedia.org/wiki/Numerical_digit#Numerals_in_most_popular_systems)? – Phrogz

Respuesta

55

[a-zA-Z]{2}\d{6}

[a-zA-Z]{2} significa dos cartas \d{6} significa 6 dígitos

Si desea sólo letras mayúsculas, a continuación:

[A-Z]{2}\d{6}

+0

funciona muy bien .... – Fergus

+0

se olvidó de comenzar con ^; de lo contrario, si tiene más de 2 letras, coincidirá parcialmente. –

16

Usted podría intentar algo como esto:

[a-zA-Z]{2}[0-9]{6} 

Aquí es un desglose de la expresión:

[a-zA-Z] # Match a single character present in the list below 
       # A character in the range between “a” and “z” 
       # A character in the range between “A” and “Z” 
    {2}   # Exactly 2 times 
[0-9]  # Match a single character in the range between “0” and “9” 
    {6}   # Exactly 6 times 

Esto coincidirá con cualquier parte de un sujeto. Si necesita límites en torno al tema, puede realizar una de las siguientes acciones:

^[a-zA-Z]{2}[0-9]{6}$ 

Lo que garantiza que todo el tema coincida. Es decir, no hay nada antes o después del tema.

o

\b[a-zA-Z]{2}[0-9]{6}\b 

que asegura hay un word boundary en cada lado del sujeto.

Como lo señaló @Phrogz, podría hacer que la expresión sea más concisa reemplazando el [0-9] por un \d como en algunas de las otras respuestas.

[a-zA-Z]{2}\d{6} 
+0

@Phrogz jaja, es una cuestión de preferencia, supongo, usualmente uso '\ d', pero no sé, me sentí un poco diferente hoy. Voy a poner un poco más de esfuerzo y actualizarlo para usted. – Robbie

+0

+1 Por ser minucioso y pedante;) – Phrogz

+0

Esto realmente ayudó. Ambos RegEx funcionó .. GRACIAS – Fergus

5

I depende de lo que es la expresión regular idioma que usa, pero de manera informal, sería:

[:alpha:][:alpha:][:digit:][:digit:][:digit:][:digit:][:digit:][:digit:] 

donde [:alpha:] = [a-zA-Z] y [:digit:] = [0-9]

si se utiliza un lenguaje de expresión regular que permite repeticiones finitos, que se vería así:

[:alpha:]{2}[:digit:]{6} 

La sintaxis correcta depende del idioma en particular que está usando, pero esa es la idea.

+0

[[: alpha:]] en lugar de [: alfa:] para buscar 2alpha y 6 dígitos [[: alfa:]] {2} [[: dígito:]] {6} –

2

Dependiendo de si su sabor expresiones regulares lo soporta, puede ser que utilice:

\b[A-Z]{2}\d{6}\b # Ensure there are "word boundaries" on either side, or 

(?<![A-Z])[A-Z]{2}\d{6}(?!\d) # Ensure there isn't a uppercase letter before 
           # and that there is not a digit after 
2

Todo lo que necesita aquí se puede encontrar en this quickstart guide. Una solución directa sería [A-Za-z][A-Za-z]\d\d\d\d\d\d o [A-Za-z]{2}\d{6}.

Si solo quiere aceptar letras mayúsculas, reemplace [A-Za-z] con [A-Z].

Cuestiones relacionadas