it-swarm.com.de

Extrahieren Sie den Parameterwert mithilfe von regulären Ausdrücken aus der URL

Dies sollte sehr einfach sein (wenn Sie die Antwort kennen). Aus dieser Frage

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

Wie erhalte ich den Parameterwert einer bestimmten URL mit regulären JavaScript-Ausdrücken?

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

37
OscarRyz

Du hättest es fast geschafft, du musst nur spezielle Regex-Zeichen entkommen:

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: Korrektur für Regex durch soupagain .

53
Crescent Fresh

Warum nimmst du nicht die Schnur und spaltet sie auf 

Beispiel auf der URL

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

sie können einen Split als machen

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

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

16
moha297

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

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

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

Sie müssen den Schlüssel auch nicht überprüfen, da er null zurückgibt, wenn sich der Schlüssel nicht in der Sammlung befindet.

6
Ion Todirel

Nicht getestet, aber das sollte funktionieren:

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

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

1

Ich verwende separate benutzerdefinierte Funktionen, die alle URL-Parameter und URL-Teile abrufen. Für URL-Parameter (der letzte Teil eines URI-Strings ist 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;
    }

Die obige Funktion gibt ein Array aus URL-Variablen zurück.

Für URL-Parts oder -Funktionen (dies ist http: //domain.tld/urlpart /? X = a & y = b Ich verwende einen einfachen uri-split,

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

Sie können sogar beide kombinieren, um sie mit einem einzigen Anruf auf einer Seite oder in Javascript verwenden zu können.

0
Cosmo Arun