Foros del Web » Programando para Internet » Javascript »

Expresion regular

Estas en el tema de Expresion regular en el foro de Javascript en Foros del Web. buenas tengo esta expresión href\s*=\s*(?:\"([^"]*)\"|(\S+)) , esta me extrae el valor del atributo href, como puedo hacer para que la expresión no tome en cuenta ...
  #1 (permalink)  
Antiguo 27/01/2013, 16:59
 
Fecha de Ingreso: enero-2003
Ubicación: Caracas
Mensajes: 439
Antigüedad: 21 años, 3 meses
Puntos: 0
Expresion regular

buenas tengo esta expresión href\s*=\s*(?:\"([^"]*)\"|(\S+)) , esta me extrae el valor del atributo href, como puedo hacer para que la expresión no tome en cuenta el valor de dicho atributo, si escribo una determinada cadena, ej.

si tengo un enlace con estas características y le paso la palabra algo este la excluya

Código PHP:
<a href="http://www.algo.com">enlace</a

Gracias!
  #2 (permalink)  
Antiguo 28/01/2013, 02:50
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Expresion regular

Para tu caso te hace falta algo similar

href="http:\/\/(((?!algo).)*)"

donde algo será la cadena que quieres excluir.

La explicación es sencilla, igual que . corresponde a cualquier carácter excepto salto de línea, si se hiciera

(?!algo).*

significa que no puede empezar por algo pero que tras algo cualquier cosa inclusive algo puede darse, entonces fallaría siempre que no comenzara con eso. ((excepcion).)* implica que cualquier cosa a cada carácter examinado puede corresponder excepto si es (?!excepcion), y que excepcion va antes para que deseche esa iteración y continúe con el siguiente carácter. * implica que esa comprobación será efectiva 0 o más veces, tantas como sea larga la cadena a comprobar.

O sea, para <a href="http://www.algo.com">enlace</a> valdría

Cita:
href="http:\/\/(((?!www\.algo\.com).)*)"
que es finalmente

'href="http:\/\/(((?!' + variable +').)*)"'

y para capturar el grupo resultante (la url) si hubiera captura y haciendo un ajuste para admitir comilla simple y doble

Código Javascript:
Ver original
  1. expr = /href=["'](http:\/\/(((?!www\.algo\.com).)*))["']/
  2. texto = 'href="http://asd.com"';
  3. r = expr.exec(texto);
  4. return r[1];

que devolvería

http://asd.com


Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 28/01/2013 a las 02:58

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 07:21.