添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
低调的数据线  ·  text - Soft hyphen in ...·  2 年前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

This should be very simple (when you know the answer). From this question

I want to give the posted solution a try. My question is:

How to get the parameter value of a given URL using JavaScript regular expressions?

I have:

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

I need:

Ahg6qcgoay4

I tried:

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

But: I suck...

@dfa: I might need that in the future, thanks for the link. I guess I should probably get this regexp right first :) – OscarRyz Aug 15, 2009 at 0:35 Checkout the javascript module get-video-id that will extract the Youtube id from any known Youtube url format (including embed strings). It doesn't use one monolithic regex, but it employs a few regex's to find the different patterns. – radiovisual Apr 12, 2016 at 14:53

You almost had it, just need to escape special regex chars:

regex = /http\:\/\/www\.youtube\.com\/watch\?v=([\w-]{11})/;
url = 'http://www.youtube.com/watch?v=Ahg6qcgoay4';
id = url.match(regex)[1]; // id = 'Ahg6qcgoay4'

Edit: Fix for regex by soupagain.

Should probably also put in a test for if the match fails, such as var m = url.match(regex); id = (m && m.length > 1) ? m[1] : null; – Tadmas Aug 14, 2009 at 22:55 Don't know how to edit answers, but the above answer is incorrect, as it fails with video IDs containing the - dash character. Therefore the regex should be: /http\:\/\/www\.youtube\.com\/watch\?v=([\w-]{11})/ – soupagain Feb 11, 2010 at 8:57

Example on the url

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

you can do a split as

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

You will get array of strings with params as name value pairs with "=" as the delimiter.

that is a original idea, +1 for that, but I recommend using HttpUtility.ParseQueryString if you can live with referencing System.Web.dll, and not reinvent the wheel – user90843 May 10, 2010 at 10:15

v is a query parameter, technically you need to consider cases ala: http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk

In .NET I would recommend to use System.Web.HttpUtility.ParseQueryString

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

And you don't even need to check the key, as it will return null if the key is not in the collection.

Strictly speaking this should be var playlist = HttpUtility.ParseQueryString(new Uri(url).Query)["v"]; because ParseQueryString is looking for a query string, not a whole URL. – kingdango Jan 25, 2013 at 19:32

I use seperate custom functions which gets all URL Parameters and URL parts . For URL parameters, (which is the final part of an URI String, 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;

The above function will return an array consisting of url variables.

For URL Parts or functions, (which is http://domain.tld/urlpart/?x=a&y=b I use a simple uri split,

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

You can even combine them both to be able to use with a single call in a page or in javascript.