Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2007, 06:00
Cyttorak
 
Fecha de Ingreso: marzo-2005
Mensajes: 47
Antigüedad: 19 años, 10 meses
Puntos: 0
Pregunta Expresion regular por la derecha

Hola
estoy trabajando con expresiones regulares y queria detectar en una cadena tipo

http://www.google.com/?url=http://www.dot.tk/?url=http://www.fin.com
el ultimo http:... es decir http://www.fin.com

Tenia la expresion regular

Código PHP:
/https?(:|%3a)(/|%2f)(/|%2f)/ 
pero eso se queda en el primer http y no en el ultimo
asi que cree esta funcion:

Código PHP:
var getRegExpDerecha = function(regExpStr) {
    return (
regExpStr==null || regExpStr.length==0)?null:new RegExp(regExpStr+"(?!=.*"+regExpStr+".*)","i");

a la que le paso por parametro "https?(:|%3a)(\\/|%2f)(\\/|%2f)"
con la idea que "(?!="... X(?!=Y) captura X cuando no le sigue Y
sin embargo sigue devolviendome el primer http en vez del ultimo

finalmente he hecho esta funcion:

Código PHP:
var matchDerechaIndex = function (str,expReg) {
    if (
str==null || expReg==null) return -1;
    var 
_index=0;
    var 
_match;
    var 
strAux=str;
    while ((
_match=strAux.match(expReg))!=null) {
            
_index+=(_match.index+1);
            
strAux=str.substr(_index);
    }
    return (
_index-1);

que si me devuelve el index donde se encuentra el ultimo http
pero estoy convencido de que deberia haber otra solucion que usara unicamente la expresion regular en un solo match

¿tengo algo mal en la sintaxis de la expresion regular? ? X(?!=Y) no significa lo que creo? no se puede hacer en javascript?

Gracias. Hasta luego.
__________________
Visita www.GranFuckultad.tk y goza de risa

Última edición por Cyttorak; 31/10/2007 a las 06:05