2010-08-20 14 views

Respuesta

9

Para obtener un buen recurso, pruebe este website y el programa RegexBuddy. Incluso puede averiguar la respuesta a su pregunta usando estos sitios.

Para empezar te quieres algo como esto:

/^[a-zA-Z]{3}\s+[0-9]{2}$/ 

Pero los detalles exactos dependen de sus requisitos. Probablemente sea una mejor idea que aprenda a usar expresiones regulares usted mismo y luego escriba la expresión regular en lugar de solo copiar las respuestas aquí. Los pequeños detalles hacen una gran diferencia. Ejemplos:

  • ¿Qué es una "carta"? ¿Solo A-Z o también letras extranjeras? ¿Qué hay de minúsculas?
  • ¿Qué es un "número"? ¿Solo 0-9 o también números extraños? ¿Solo enteros? ¿Solo enteros positivos? ¿Puede haber ceros a la izquierda?
  • ¿Debería haber un espacio simple entre las letras y los números? O cualquier cantidad de espacios en blanco? ¿Incluso ninguno?
  • ¿Desea buscar esta cadena en un texto más grande? ¿O coincide con una línea exactamente?
  • etc ..

Las respuestas a estas preguntas van a cambiar la expresión regular. Sería mucho más rápido para usted a largo plazo aprender a crear la expresión regular que especificar completamente sus requisitos y esperar a que otras personas respondan.

Olvidé mencionar que habrá un espacio antes y después.¿Cómo incluyo eso?

Una vez más debe tener en cuenta las preguntas:

  • Qué quiere decir un solo espacio o cualquier cantidad de espacios? Posiblemente no siempre un espacio, pero solo algunas veces?
  • ¿Te refieres literalmente a un personaje de espacio o cualquier personaje de espacio en blanco?

Mi conjetura es:

/^\s+[a-zA-Z]{3}\s+[0-9]{2}\s+$/ 
+0

Lo siento, ¡soy totalmente nuevo en RegEx! Sí, habrá un espacio antes y después.Lo siento, no especifiqué –

+0

¡Antes y después no tiene sentido! Su cadena de ejemplo es 'LET 12'. ¡Eso tiene un espacio, justo en el medio! ¿Quieres decir que quieres unir "DEJAR 12"? Eso tiene tres espacios (izquierda, centro, derecha). Además, debe especificar cosas como sensibilidad a mayúsculas y minúsculas, como lo dijo Mark. – Stephen

+0

+1 Usted escribe y explica tan claramente. Eres un gran recurso para este sitio. – dawg

2

/[a-z]{3} [0-9]{2}/i coincidirá con 3 letras seguidas de un carácter de espacio en blanco, y luego 2 números. [a-z] es un character class que contiene las letras de la a a la z, y {3} significa que quiere exactamente 3 miembros de esa clase. El carácter de espacio coincide con un espacio literal (alternativamente, puede usar \s, que es una clase de carácter "taquigráfico" que coincide con cualquier carácter de espacio en blanco). El i al final es pattern modifier especificando que su patrón es insensible a las mayúsculas y minúsculas.

Si desea toda la cadena sea sólo eso, es necesario anchor con ^ y $:

/^[a-z]{3} [0-9]{2}$/i 

recursos Expresión regular:

+0

¿Por qué no '/ \ w {3} \ d {2} /' fuera de interés? –

+1

Estaba siendo más detallado para mayor claridad, pero '\ d' podría usarse en lugar de' [0-9] '. ¡Sin embargo, ten en cuenta que '\ w' no es equivalente a' [a-z] '! En general, es '[A-Za-z0-9_]'. –

+0

¿Por qué se bajó este valor? –

0

\w{3}\s{1}\d{2} y me gusta this site.

EDIT: [a-zA-Z]{3}\s{1}\d{2} - El \w admite caracteres numéricos también.

+0

-1 para {1}, que no tiene sentido, +1 para usar clases de caracteres -> 0 en total – unbeli

+3

'\ w' no es equivalente a' [a-zA-Z] ', pero en general' [a-zA-Z0-9_] ' –

+0

@unbeli, nada malo con {1} ... no es necesario para el motor regexp, pero es sintáctica y semánticamente válido. Hace que la expresión regular sea más fácil de entender para los principiantes porque los tres términos son paralelos. @DanielV, buen punto. – LarsH

1

^([A-Za-z]{3}) ([0-9]{2})$ asumiendo un espacio entre las letras/números, como en su ejemplo. Esto capturará las letras y los números por separado.

Yo uso http://gskinner.com/RegExr/ - le permite construir una expresión regular y probarla con su propio texto.

+0

Impresionante, pero olvidé mencionar que habrá un espacio antes y después. ¿Cómo incluyo eso? –

0

Como probablemente sepa por la gran variedad de respuestas, RegEx es un tema complejo con una amplia variedad de opiniones y preferencias, y a menudo más de una forma de hacer las cosas. Esta es mi solución preferida.

^[a-zA-Z]{3}\s*\d{2}$ 

que utilizan [a-zA-Z] en lugar de \w\w porque a veces incluye guiones bajos.

El \s* es para permitir cero o más espacios.

Intento utilizar clases de caracteres siempre que sea posible, por lo que fui con \d.

0

probar esto RegularExpression

[^"\r\n]{3,} 
Cuestiones relacionadas