Извлечение значения параметра из url с использованием регулярных выражений

Это должно быть очень просто (когда вы знаете ответ). Из этот вопрос

Я хочу дать опубликованное решение попробовать. Мой вопрос:

Как получить значение параметра для заданного URL с помощью регулярных выражений JavaScript?

У меня есть:

http://www.youtube.com/watch?v=Ahg6qcgoay4

Мне нужно:

Ahg6qcgoay4

Я пробовал:

http://www.youtube.com/watch\\?v=(w{11})

Но: я сосать...

Ответ 1

У вас почти было это, просто нужно избегать специальных символов регулярных выражений:

regex = /http\:\/\/www\.youtube\.com\/watch\?v=([\w-]{11})/;

url = 'http://www.youtube.com/watch?v=Ahg6qcgoay4';
id = url.match(regex)[1]; // id = 'Ahg6qcgoay4'

Изменить: Исправить для регулярного выражения soupagain.

Ответ 2

Почему вы не берете строку и не разбиваете ее?

Пример на URL

var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"

вы можете сделать раскол как

var params = url.split("?")[1].split("&");

Вы получите массив строк с параметрами как пары значений имени с "=" в качестве разделителя.

Ответ 3

v - параметр запроса, технически вам нужно рассмотреть случаи ala: http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk

В .NET я бы рекомендовал использовать System.Web.HttpUtility.ParseQueryString

HttpUtility.ParseQueryString(url)["v"];

И вам даже не нужно проверять ключ, так как он вернет значение null, если ключ не находится в коллекции.

Ответ 4

Не тестировалось, но это должно работать:

/\?v=([a-z0-9\-]+)\&?/i

Ответ 5

Я знаю, что вопрос старый и уже ответил, но это также может быть решением

\b[\w-]+$

и я проверил эти два URL

http://www.youtube.com/watch?v=Ahg6qcgoay4
https://www.youtube.com/watch?v=22hUHCr-Tos

DEMO

Ответ 6

Я использую отдельные пользовательские функции, которые получают все URL-параметры и URL-адреса. Для параметров URL (которая является заключительной частью строки URI, http://domain.tld/urlpart/ ? X = a & y = b

    function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
    }

Вышеуказанная функция вернет массив, состоящий из переменных URL.

Для частей или функций URL (http://domain.tld/ urlpart/? x = a & y = Ь Я использую простой разделение uri,

function getUrlParams() { 
    var vars = {};
    var parts = window.location.href.split('/' );
    return parts;
}

Вы даже можете объединить их обоих, чтобы иметь возможность использовать один вызов на странице или в javascript.