Вопрос по javascript, query-string, jquery, expression – Это сработало для меня:

31

аюсь использовать API данных YouTube для создания списка воспроизведения видео. Однако для URL-адресов видео требуется формат youtube.com/watch?v=3sZOD3xKL0Y, но API-интерфейс генерирует youtube.com/watch?v=3sZOD3xKL0Y&feature=youtube_gdata. Так что мне нужно сделать, чтобы иметь возможность выбрать все после и включая амперсанд и удалить его из URL. Любой способ сделать это с помощью JavaScript и своего рода регулярного выражения?

Посмотрите на этот пост:stackoverflow.com/questions/738351/... x-freestyler

Ваш Ответ

10   ответов
1

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

5
//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

Например, у нас есть:

example.com/list/search?q=Somethink

И вам нужно использовать переменную URL, как этоwindow.location.href:

example.com/list/edit

Из URL:

example.com/list/search?q=Somethink
example.com/list/
var url = (window.location.href);
    url = url.split('/search')[0];
    url = (url + '/edit');

Это простое решение :-)

38

Почему нет:

url.split('?')[0] 
Мне интересно, есть ли сценарий, в котором это короткое решение не работает? goldylucks
Работает отлично! vishwarajanand
0

window.location.replace(window.location.pathname)
1

Ну, я использую это:

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];
    }
20

Хм ... Ищем лучший способ ... вот он

var onlyUrl = window.location.href.replace(window.location.search,'');
Это мой конкретный случай перезагрузки страницы без параметров: window.location.assign (window.location.href.replace (window.location.search, '')); gtamborero
19

Пример: http://jsfiddle.net/SjrqF/

youtube.com/watch?v=3sZOD3xKL0Y&feature=youtube_gdata';

url = url.slice( 0, url.indexOf('&') );

или же:

Пример: http://jsfiddle.net/SjrqF/1/

;youtube.com/watch?v=3sZOD3xKL0Y&feature=youtube_gdata';

url = url.split( '&' )[0];
34

Просто:

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);
}
Ух ты. Это было молниеносно. Я на самом деле обнаружил, что мне нужно извлечь другой узел из канала, хотя это уникально. Как извлечь только идентификатор, переданный сразу после видео: в этом теге - тег: youtube.com, 2008: video: 3sZOD3xKL0Y mheavers
Я думаю, что в простом ответе вы хотели напечатать: var new_url = old_url.substring (0, old_url.indexOf ('?')); Амперсанд не будет работать :) theadam
Можете ли вы придумать сценарий, гдесамый простой способ не сработает? goldylucks
1

v и создайте URL самостоятельно, так как вы знаете, что URL-адрес youtube.com/watch?v = ...

http://jsfiddle.net/akURz/

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

Похожие вопросы