Foros del Web » Programando para Internet » Javascript »

Expresion regular no coincidencia

Estas en el tema de Expresion regular no coincidencia en el foro de Javascript en Foros del Web. Hola, llevo un tiempo dandole vueltas y no consigo dar con la solución. Lo que quiero hacer es una expresión regular que me seleccione de ...
  #1 (permalink)  
Antiguo 10/05/2012, 04:38
 
Fecha de Ingreso: diciembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 5
Expresion regular no coincidencia

Hola,

llevo un tiempo dandole vueltas y no consigo dar con la solución.

Lo que quiero hacer es una expresión regular que me seleccione de un string grande, substrings más pequeños.

Las condiciones para que seleccione cada substring son las siguientes:
  1. Que el substring no comience por "-->"
  2. Que el substring no termine por "<--"
  3. El substring puede aparecer en cualquier parte del string

Ej:"xxxxxxxx-->substring<--xxxxxxxxx"

¿Álquien puede ayudarme?

Gracias.

Última edición por DarkWater; 10/05/2012 a las 05:22
  #2 (permalink)  
Antiguo 13/05/2012, 02:09
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 10 meses
Puntos: 32
Respuesta: Expresion regular no coincidencia

Hola!,

Mas bien lo que quieres es pillar a todas las coincidencias que esten entre --> y <--. Esto te ayudara.

Código Javascript:
Ver original
  1. var patron = /-->.*?<--/g;
  2. var cadena = "abc123-->pillado1<-- x-><--->pillado2<--xxx-->abc123";
  3. var pillados = cadena.match(patron);
  4. alert(pillados.join(","));

Saludos!
  #3 (permalink)  
Antiguo 13/05/2012, 07:22
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Expresion regular no coincidencia

usa el método replace y esta expresión
Cita:
/<[^>]+>/g
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #4 (permalink)  
Antiguo 17/05/2012, 05:28
 
Fecha de Ingreso: diciembre-2009
Mensajes: 186
Antigüedad: 14 años, 5 meses
Puntos: 5
Respuesta: Expresion regular no coincidencia

Hola,

gracias por responder, pero no era exactamente lo que quería.

Voy a poner otro ejemplo:

Tenemos el string: "fecha 20-3-2012."
Quiero que seleccione la fecha "20-3-2012", pero solo si no tiene al principio y al final otra cifra, es decir, "20-3-20120", "020-3-2012" o "020-3-20120" no serían seleccionadas.

He conseguido hacer que la fecha no esté seguida de una cifra con la expresión (?!\d).
Pero no consigo hacer lo mismo con la cifra que precede a la fecha. He probado con (\d|^) pero como es normal me selecciona el caracter anterior a la fecha y esto no me vale.

¿Hay alguna forma de hacer con la cifra del principio lo mismo que con la cifra del final sin seleccionarla?

Gracias.
  #5 (permalink)  
Antiguo 17/05/2012, 06:54
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años
Puntos: 343
Respuesta: Expresion regular no coincidencia

Es una lastima que JavaScript no tenga 'negative look behinds', que basicamente son lo que necesitás (aunque si soporta negative looks aheads, que es lo que estás usando '(?!\d)').

Te diría que busques como emularlo.
__________________
blog | @aijoona
  #6 (permalink)  
Antiguo 18/05/2012, 15:56
 
Fecha de Ingreso: julio-2011
Ubicación: Zapopan, Jal. MX
Mensajes: 316
Antigüedad: 12 años, 10 meses
Puntos: 32
Respuesta: Expresion regular no coincidencia

Hola!,

Mira entonces prueba asi

Código Javascript:
Ver original
  1. // Para pillar
  2. var patron1 = /(^|\D)\d{1,2}-\d{1,2}-\d{4}($|\D)/g;
  3. // Para arreglar los pillados
  4. var patron2 = /(^\D+)|(\D+$)/g;
  5. // String de ejemplo
  6. var cadena  = "xxx20-03-2012x 33 31-1-2014xx 18-01-20123";
  7. // Pillados con el patron1
  8. var pillados  = cadena.match(patron1);
  9. // Ciclo para arreglar los pillados
  10. for( var i = 0; i < pillados.length; i++) {
  11.     // Quitamos los caracteres no deseados con el patron2
  12.     pillados[i] = pillados.replace(patron2, '');
  13. }

Pruebalo, espero que sea lo que ocupas :)

Saludos!

Última edición por IXtremeLT; 21/05/2012 a las 23:10

Etiquetas: expresion, regular
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 13:42.