我需要检查网址中是否有网址,如果有,请将其解压缩(内部网址)。
所以,我需要检查这是否是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(/* ??? */)
}
}
我不确定这是否仅在正则表达式中完成,我应该怎么做呢?
答案 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
的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/'