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)/
asi que cree esta funcion:
Código PHP:
var getRegExpDerecha = function(regExpStr) {
return (regExpStr==null || regExpStr.length==0)?null:new RegExp(regExpStr+"(?!=.*"+regExpStr+".*)","i");
}
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);
}
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.