53 Stimmen

Extrahieren von Parameterwerten aus Url mit regulären Ausdrücken

Dies sollte sehr einfach sein (wenn Sie die Antwort kennen). Von diese Frage

Ich möchte die gepostete Lösung ausprobieren. Meine Frage ist:

Wie erhält man den Parameterwert einer bestimmten URL mit regulären Ausdrücken in JavaScript?

Ich habe:

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

Ich brauche:

Ahg6qcgoay4

Ich habe es versucht:

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

Aber: Ich bin scheiße...

0 Stimmen

Prüft auch diese Frage: stackoverflow.com/questions/738351/

0 Stimmen

@dfa: Das könnte ich in Zukunft brauchen, danke für den Link. Ich schätze, ich sollte wahrscheinlich zuerst diese Regexp richtig hinbekommen :)

0 Stimmen

74voto

Crescent Fresh Punkte 111444

Sie haben es fast geschafft, Sie müssen nur spezielle Regex-Zeichen entschlüsseln:

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

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

編集する。 Korrektur für Regex von soupagain .

3 Stimmen

Wahrscheinlich sollte man auch einen Test für den Fall einbauen, dass die Übereinstimmung fehlschlägt, z. B. var m = url.match(regex); id = (m && m.length > 1) ? m[1] : null;

3 Stimmen

Ich weiß nicht, wie man Antworten bearbeitet, aber die obige Antwort ist nicht korrekt, da sie bei Video-IDs, die den Bindestrich enthalten, fehlschlägt. Daher sollte die Regex lauten: /http\:\/\/www \.youtube\.com\ /watch\?v=([ \w -]{11})/

22voto

moha297 Punkte 1812

Warum nehmen Sie nicht die Zeichenkette und teilen sie auf?

Beispiel auf der Url

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

können Sie einen Split durchführen als

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

Sie erhalten ein Array von Strings mit Parametern als Name-Wert-Paare mit "=" als Trennzeichen.

0 Stimmen

Das ist eine originelle Idee, +1 für das, aber ich empfehle die Verwendung von HttpUtility.ParseQueryString, wenn Sie mit Verweis auf System.Web.dll leben können, und nicht das Rad neu erfinden

5voto

Robert Swisher Punkte 1290

Nicht getestet, aber es sollte funktionieren:

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

0 Stimmen

Einige youtube-URLs haben auch ein -, wie zum Beispiel... youtube.com/watch?v=22hUHCr-Tos

0 Stimmen

@MyWhriledView Aktualisiert wegen des Bindestrichs

5voto

V ist ein Abfrageparameter, technisch gesehen müssen Sie die Fälle ala: http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk

In .NET würde ich empfehlen, die System.Web.HttpUtility.ParseQueryString

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

Und Sie brauchen nicht einmal den Schlüssel zu überprüfen, da er null zurückgibt, wenn der Schlüssel nicht in der Sammlung enthalten ist.

1 Stimmen

Streng genommen sollte dies var playlist = HttpUtility.ParseQueryString(new Uri(url).Query)["v"]; sein, da ParseQueryString nach einer Abfragezeichenfolge und nicht nach einer ganzen URL sucht.

0 Stimmen

1 Stimmen

Warum ist diese Antwort in .NET, wenn der OP JS getaggt hat?

4voto

Ich weiß, die Frage ist alt und bereits beantwortet, aber dies kann auch eine Lösung sein

\b[\w-]+$

und ich habe diese beiden URLs überprüft

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

DEMO

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X