2011-01-10 113 views
25

我试图使用YouTube数据api来生成视频播放列表。但是,视频网址需要youtube.com/watch?v=3sZOD3xKL0Y格式,但api生成的内容是youtube.com/watch?v=3sZOD3xKL0Y & feature = youtube_gdata。因此,我需要做的是能够选择包含&符号之后的所有内容,并将其从网址中移除。任何方式与JavaScript和某种正则表达式做到这一点?使用javascript或jquery删除url参数

+0

看看这篇文章:http://stackoverflow.com/questions/738351/javascript-url-manipulation-library-api/3215670#3215670 – 2011-09-06 23:21:04

+0

[javascript对象的查询字符串编码]的可能重复(http://stackoverflow.com/question s/1714786/querystring -a-javascript-object的编码) – 2013-11-15 18:19:10

回答

26

简单:

var new_url = old_url.substring(0, old_url.indexOf('?')); 

修改: 这会从URL中删除所有参数或片段

var oldURL = [YOUR_URL_TO_REMOVE_PARAMS] 
var index = 0; 
var newURL = oldURL; 
index = oldURL.indexOf('?'); 
if(index == -1){ 
    index = oldURL.indexOf('#'); 
} 
if(index != -1){ 
    newURL = oldURL.substring(0, index); 
} 
+0

哇。这闪电很快。实际上,我发现我需要从Feed中提取不同的节点,这是独一无二的。我将如何提取只是在视频后传递的ID:在这个标签 - 标签:youtube.com,2008:视频:3sZOD3xKL0Y – mheavers 2011-01-10 22:04:41

+2

我认为在你打算输入的简单答案: var new_url = old_url.substring(0 ,old_url.indexOf('?')); &符不会工作:) – theadam 2015-01-09 11:33:29

1

你可以使用正则表达式匹配的v价值,并建立自己的网址,因为你知道这个网址是youtube.com/watch?v = ...

http://jsfiddle.net/akURz/

var url = 'http://youtube.com/watch?v=3sZOD3xKL0Y'; 
alert(url.match(/v\=([a-z0-9]+)/i)); 
16

嗯......寻找更好的方式...这里是

var onlyUrl = window.location.href.replace(window.location.search,''); 
21

我错过了什么?

为什么不:

url.split('?')[0] 
2
//user113716 code is working but i altered as below. it will work if your URL contain "?" mark or not 
//replace URL in browser 
if(window.location.href.indexOf("?") > -1) { 
    var newUrl = refineUrl(); 
    window.history.pushState("object or string", "Title", "/"+newUrl); 
} 

function refineUrl() 
{ 
    //get full url 
    var url = window.location.href; 
    //get url after/ 
    var value = url = url.slice(0, url.indexOf('?')); 
    //get the part after before ? 
    value = value.replace('@System.Web.Configuration.WebConfigurationManager.AppSettings["BaseURL"]',''); 
    return value;  
} 
0

使用此功能:

var getCleanUrl = function(url) { 
 
    return url.replace(/#.*$/, '').replace(/\?.*$/, ''); 
 
}; 
 

 
// get rid of hash and params 
 
console.log(getCleanUrl('https://sidanmor.com/?firstname=idan&lastname=mor'));

如果你希望所有的HREF部分,使用:

var url = document.createElement('a'); 
 
url.href = 'https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container'; 
 

 
console.log(url.href); // https://developer.mozilla.org/en-US/search?q=URL#search-results-close-container 
 
console.log(url.protocol); // https: 
 
console.log(url.host); // developer.mozilla.org 
 
console.log(url.hostname); // developer.mozilla.org 
 
console.log(url.port); // (blank - https assumes port 443) 
 
console.log(url.pathname); // /en-US/search 
 
console.log(url.search); // ?q=URL 
 
console.log(url.hash); // #search-results-close-container 
 
console.log(url.origin); // https://developer.mozilla.org

0

嗯,我用这:

stripUrl(urlToStrip){ 
     let stripped = urlToStrip.split('?')[0]; 
     stripped = stripped.split('&')[0]; 
     stripped = stripped.split('#')[0]; 
     return stripped; 
    } 

或:

stripUrl(urlToStrip){ 
     return urlToStrip.split('?')[0].split('&')[0].split('#')[0]; 
    }