web-dev-qa-db-fra.com

Extraire la valeur du paramètre de l'URL à l'aide d'expressions régulières

Cela devrait être très simple (quand vous connaissez la réponse). De cette question

Je veux essayer la solution affichée. Ma question est:

Comment obtenir la valeur de paramètre d'une URL donnée à l'aide d'expressions régulières JavaScript?

J'ai:

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

J'ai besoin: 

Ahg6qcgoay4

J'ai essayé:

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

Mais: je suce ... 

37
OscarRyz

Vous l'avez presque eu, il vous suffit d'échapper aux caractères spéciaux de regex:

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: Correction de regex par soupagain .

53
Crescent Fresh

Pourquoi ne pas prendre la ficelle et la fendre 

Exemple sur l'URL

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

vous pouvez faire une scission comme

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

Vous obtiendrez un tableau de chaînes avec params comme paires nom-valeur avec "=" comme délimiteur.

16
moha297

v est un paramètre de requête. Techniquement, vous devez également prendre en compte les cas suivants: http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk

Dans .NET, je recommanderais d'utiliser System.Web.HttpUtility.ParseQueryString

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

Et vous n'avez même pas besoin de vérifier la clé, car elle retournera null si la clé n'est pas dans la collection.

6
Ion Todirel

Non testé mais cela devrait fonctionner:

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

Je sais que la question est ancienne et que nous y avons déjà répondu, mais cela peut aussi être une solution. 

\b[\w-]+$

et j'ai vérifié ces deux URL

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

DEMO

1
Taha Ishfaq Bhutta