正则表达式(?)用于从另一个URL中提取URL

时间:2013-10-12 10:31:28

标签: javascript regex url

我需要检查网址中是否有网址,如果有,请将其解压缩(内部网址)。

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

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

并提取

http://innerURL.com/innerParameter1

没有jquery。这是为了clien-side 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 个答案:

答案 0 :(得分: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];
    }
}

答案 1 :(得分:1)

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

var inner = link[i].href.indexOf('http://',1);
inner = inner>-1 ? link[i].href.substr(inner,link[i].href.indexOf('&',inner)-inner) : false;
如果找不到内部URL,

inner将为false,如果

,则为字符串

答案 2 :(得分:0)

您可以使用:

link[i].href = link[i].href.replace(/^.*?[?&]u=(http:.+?)(?:&.*|\/?)$/i, '$1');

答案 3 :(得分: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/'