53

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...

asked Aug 14, 2009 at 22:46
4
  • checkout also this question: stackoverflow.com/questions/738351/… Commented Aug 14, 2009 at 22:59
  • @dfa: I might need that in the future, thanks for the link. I guess I should probably get this regexp right first :) Commented Aug 15, 2009 at 0:35
  • '/v=[0-9A-Za-z]*/' stackoverflow.com/questions/11706986/… Commented Jun 30, 2015 at 4:02
  • 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. Commented Apr 12, 2016 at 14:53

7 Answers 7

74

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.

answered Aug 14, 2009 at 22:52

2 Comments

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;
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})/
22

Why dont you take the string and split it

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.

answered Apr 9, 2010 at 7:08

1 Comment

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
5

Not tested but this should work:

/\?v=([a-z0-9\-]+)\&?/i
answered Aug 14, 2009 at 22:50

2 Comments

some youtube urls have a - as well, such as... youtube.com/watch?v=22hUHCr-Tos
@MyWhriledView Updated for the hyphen
5

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.

answered Apr 9, 2010 at 6:41

3 Comments

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.
Why is this answer in .NET when the OP has tagged JS?
5

I know the question is Old and already answered but this can also be a solution

\b[\w-]+$

and I checked these two URLs

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

DEMO

answered Mar 12, 2016 at 10:40

Comments

2

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.

answered Nov 11, 2017 at 15:15

Comments

0

This RegEx supports many YouTube url formats.

/^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|shorts\/|watch\?.+&v=))((\w|-){11})(?:\S+)?$/

Supported url formats

const ytUrlFormats = {
 normal: 'https://www.youtube.com/watch?v=12345678901',
 share: 'https://youtu.be/12345678902',
 shareWithStartTime: 'https://youtu.be/12345678903?t=6',
 mobileBrowserUrl: 'https://m.youtube.com/watch?v=12345678904&list=RD12345678901&start_radio=1',
 long: 'https://www.youtube.com/watch?v=12345678905&list=RD12345678905&start_radio=1&rv=smKgVuS',
 longWithStartTime: 'https://www.youtube.com/watch?v=12345678906&list=RD12345678901&start_radio=1&rv=12345678901&t=38',
 shorts: 'https://youtube.com/shorts/12345678907',
};

You can check this in the TS Playground (run & check in the console)

answered Nov 6, 2023 at 7:08

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.