Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problemas con Expresiones regulares

Estas en el tema de Problemas con Expresiones regulares en el foro de Javascript en Foros del Web. Buenas amigos, estoy realizando un pequeño código que realiza búsquedas de matriculas de vehículos españoles en un correo electrónico. El código realiza búsquedas de las ...
  #1 (permalink)  
Antiguo 13/06/2016, 00:55
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 17 años, 11 meses
Puntos: 0
Problemas con Expresiones regulares

Buenas amigos, estoy realizando un pequeño código que realiza búsquedas de matriculas de vehículos españoles en un correo electrónico. El código realiza búsquedas de las matriculas para posteriormente, cuando se esta visionando el correo la aplicacion ejerza una ayuda y muestre en un lateral información del o los vehículos del que se esta hablando en ese correo para obtener datos al vuelo.

Hasta ahí todo bien, una expresión regular que detecte matriculas es relativamente fácil... Pero no cuando existe diferentes tipos de formatos de matriculas y a esto hay que añadir que cada persona tiende escribirlas de una forma diferente, bien con espacios entre letras y números, con guiones o sin ellos así que tiene que darse en la expresión todos los casos.

Confeccioné el siguiente patrón de búsqueda.

Código:
[A-Za-z]{1,2}[\- ][0-9]{4,5}[\- ][A-Za-z]{1,3}|[A-Za-z]{1,2}[0-9]{4,5}[A-Za-z]{1,3}
Y la búsqueda en el siguiente texto:

Código:
la matricula CO-0000-AX pertenece a córdoba y esta también CO 0000 AX pero con espacios, esta es de un remolque R0000BBR y sin espacios y esta es de las nuevas 7852-FPC y esta con espacios 7852 FPC y esta es sin espacio 00000AXX
El patrón selecciona la mayoría de las matriculas pero tengo un pequeño problema con las matriculas que estas separados por un espacio entre letras y números y las matriculas nuevas que no tienen letras al principio. Realizando pruebas en la web www.regexpal.com/ este es el resultado.

Código:
la matricula CO-0000-AX pertenece a córdoba y esta también CO 0000 AX pero con espacios, esta es de un remolque R0000BBR y sin espacios y esta es de las nuevas 7852-FPC y esta con espacios 7852 FPC y esta es sin espacio 00000AXX
Como ven en la matriculas nuevas que no tienen letras al principio de ellas selección los dos últimos caracteres de la palabra anterior. No existe algún comodín para decirle por ejemplo que excluya seleccionar caracteres que pertenecen a palabras completas?

Muchas gracias foreros, siempre estáis ahí.
  #2 (permalink)  
Antiguo 13/06/2016, 15:05
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Problemas con Expresiones regulares

Buenas,

En Javascript no hay look behind para expresiones regulares, con lo cual no se puede ir atrás para comprobar que dicha expresión regular va seguida de un espacio. Sin embargo si que hay look ahead. Es decir, se puede mirar que una expresión debe seguirle un espacio en blanco. Busca lookahead aquí para entenderlo: https://developer.mozilla.org/en-US/...ar_Expressions

Yo optaría por este camino (acordarse de poner el flag de case insensitive i):

Matrículas nuevas: \d{4}[- ]?[A-Z]{1,3}
Matriculas antiguas: [A-Z]{1,2}[- ]?\d{4}[- ]?[A-Z]{1,2}
Remolques: R[- ]?\d{4}[- ]?[A-Z]{1,3}
Mas tipos...

Y luego juntarlo:
Código Javascript:
Ver original
  1. /(\d{4}[- ]?[A-Z]{1,3}|[A-Z]{1,2}[- ]?\d{4}[- ]?[A-Z]{1,2}|R[- ]?\d{4}[- ]?[A-Z]{1,3})(?= )/gi

Saludos!
__________________
github.com/xgbuils | npm/xgbuils
  #3 (permalink)  
Antiguo 14/06/2016, 05:27
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Problemas con Expresiones regulares

Muchísimas gracias Pantaláimon con tu código esto funciona a la perfección. Lo único que tengo que resolver el porque no encuentra matriculas que simplemente estén en la posición final de un párrafo, es decir, si la matricula esta al final de un párrafo y después de esta no hay ningún caracter mas o hay un punto y final no la detecta. Si, si existe un espacio.

Todo lo demás perfecto, gracias a tu código ademas mas corto. Tengo que indagar mucho mas en este tema ya que pienso que una buena expresión regular puede reducir mucho código al intentar hacerlo de otras formas. Estuve leyendo mucho estos días pero como ya ves mi código no dio el resultado esperado. Leere el enlace que me dejastes porque este tema me esta interesando mucho.

Graciass
  #4 (permalink)  
Antiguo 14/06/2016, 13:58
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Problemas con Expresiones regulares

De nada, yo soy de los que piensa que no hay que abusar extremadamente de las expresiones regulares. Si una expresión regular se hace muy larga, recomiendo en todo caso usar varias expresiones más pequeñas y tirar de condicionales (if, else...). Para mi es más legible y depurable.

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils
  #5 (permalink)  
Antiguo 15/06/2016, 01:43
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
Antigüedad: 17 años, 11 meses
Puntos: 0
Respuesta: Problemas con Expresiones regulares

¿Que es lo que definirías como larga? ¿Algo como la que tu me has expuesto entraría dentro de larga o normal?

Saludos
  #6 (permalink)  
Antiguo 16/06/2016, 13:10
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Respuesta: Problemas con Expresiones regulares

Sí, para mi sí.
__________________
github.com/xgbuils | npm/xgbuils

Etiquetas: expresiones, regulares
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:39.