0

我需要检查 URL 中是否有 URL,如果有,请提取它(内部 URL)。

所以,我需要检查这是否是 URL 中的 URL

http://www.outerURL.com/outerParameter1/x?u=http://innerURL.com/innerParameter1&outerParameter2/

并提取

http://innerURL.com/innerParameter1

没有jQuery。这适用于客户端 javascript。

并希望使它适合这个模板

var link;
link = document.body.getElementsByTagName("a")

for (var i = 0; i < link.length; i++) {
    if (
            // URL checking here
        ){
        //replacing here
        link[i].href = link[i].href.replace(/*  ??? */)
        }
    }

我不确定这是否会单独在正则表达式中完成,我应该怎么做?

4

4 回答 4

1

中的一些东西:

var links = document.body.getElementsByTagName("a");

for (var i = 0; i < links.length; i++) {
    var link = link[i].href,
        m = s.match(/.(http[^&]+)/); //link.match(/u=/u=(http:[^&]+)/);
    if (m){
        link.href = m[1];
    }
}
于 2013-10-12T10:36:12.867 回答
1

非正则表达式,假设语法是相当静态的:

var inner = link[i].href.indexOf('http://',1);
inner = inner>-1 ? link[i].href.substr(inner,link[i].href.indexOf('&',inner)-inner) : false;

inner如果未找到内部 URL,则为 false,如果找到,则为内部 URL 字符串

于 2013-10-12T10:48:19.897 回答
0

您可以使用:

link[i].href = link[i].href.replace(/^.*?[?&]u=(http:.+?)(?:&.*|\/?)$/i, '$1');
于 2013-10-12T10:44:26.197 回答
0

试试这个

/^[A-Z].+\?[A-Z]=(.*)&/gim

http://regex101.com/r/dF3rN5

Javascript

url = 'http://www.outerURL.com/outerParameter1/x?u=http://innerURL.com/innerParameter1&outerParameter2/';

replace = url.replace(/^[A-Z].+\?[A-Z]=(.*)&/gim, '$1');

// returns 'http://innerURL.com/innerParameter1outerParameter2/'
于 2013-10-12T10:52:52.050 回答