Ich möchte v=id
die URL von YouTube mit JavaScript abrufen (kein jQuery, reines JavaScript).
Beispiel für YouTube-URL-Formate
http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW
http://www.youtube.com/watch?v=u8nQa1cJyX8
Oder ein anderes YouTube-Format, das eine Video-ID in der URL enthält.
Ergebnis dieser Formate
u8nQa1cJyX8
javascript
regex
url
youtube
Adam
quelle
quelle
Antworten:
Sie müssen dafür keinen regulären Ausdruck verwenden.
quelle
https://youtu.be/{{video_id}}
url='https://youtu.be/{{video_id}}'; url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
Ich habe Regex von "jeffreypriebe" verbessert, weil er eine Art YouTube-URL benötigte. Dies ist die URL der Videos, wenn sie durch einen Kanal schauen.
Nun nein, aber das ist die Funktion, die ich bewaffnet habe.
Dies sind die unterstützten URL-Typen
Kann in [http://web.archive.org/web/20160926134334/] http://lasnv.net/foro/839/Javascript_parsear_URL_de_YouTube gefunden werden
quelle
/.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/
Dann verwenden Siematch[1]
stattmatch[7]
(was mir etwas willkürlich erschien). Behebt auch den von WebDev hervorgehobenen Fehler.Ich habe Lasnvs Antwort etwas vereinfacht.
Es behebt auch den von WebDeb beschriebenen Fehler.
Hier ist es:
Hier ist ein Regexer-Link zum Spielen: http://regexr.com/3dnqv
quelle
Keines davon funktionierte ab dem 1.1.2015 am Spülbecken, insbesondere URLs ohne protokale http / s und mit Youtube-Nocookie-Domain. Hier ist eine modifizierte Version, die auf all diesen verschiedenen Youtube-Versionen funktioniert:
quelle
^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]+).*
(dh youtube.com/watch?v=Getestet am:
Inspiriert von dieser anderen Antwort .
quelle
Angesichts der Tatsache, dass YouTube eine Vielzahl von URL-Stilen hat, halte ich Regex für eine bessere Lösung. Hier ist mein Regex:
Gruppe 3 hat deine YouTube-ID
Beispiel-YouTube-URLs (derzeit einschließlich "Legacy-Einbettungs-URL-Stil") - der oben genannte Regex funktioniert für alle:
Hutspitze zu Lasnv
quelle
"domain.com/embed/file.txt"
,"/tv/"
und"Has anyone seen my watch?"
. Siehe: meine Antwort auf eine ähnliche Frage für eine viel genauere Lösung.Ich habe eine Funktion erstellt, die Benutzereingaben auf Youtube-, Soundcloud- oder Vimeo-Einbettungs-IDs testet, um mit eingebetteten Medien ein kontinuierlicheres Design erstellen zu können. Diese Funktion erkennt ein Objekt mit zwei Eigenschaften: "Typ" und "ID" und gibt es zurück. Der Typ kann entweder "youtube", "vimeo" oder "soundcloud" sein und die Eigenschaft "id" ist die eindeutige Medien-ID.
Auf der Website verwende ich einen Textbereich-Speicherauszug, in den der Benutzer jede Art von Link oder Einbettungscode einfügen kann, einschließlich der iFrame-Einbettung von vimeo und youtube.
quelle
Spät zum Spiel hier, aber ich habe zwei hervorragende Antworten von Mantish und JW zusammengestellt. Zunächst die modifizierte Regex:
Hier ist der Testcode (ich habe die ursprünglichen Testfälle von mantish zu den fieseren von jw hinzugefügt):
Experimentelle Version für die in den Kommentaren genannten m.youtube- URLs:
Es muss in den Tests an zwei Stellen
parsed[2]
geändertparsed[3]
werden (die dann mitm.youtube
zu den Tests hinzugefügten URLs bestanden werden). Lassen Sie mich wissen, wenn Sie Probleme sehen.quelle
http://youtu.be/
wenn ich das hinzufüge, das/
es als gültig markiert. Verwenden Sie es in(value) => /^.*(youtu\.be\/|vi?\/|u\/\w\/|embed\/|\?vi?=|\&vi?=)([^#\&\?]*).*/.test(value)
tl; dr.
Entspricht allen URL-Beispielen zu dieser und einigen weiteren Fragen.
ID wird immer in Spielgruppe 7 sein.
Live-Beispiele aller URLs, die ich aus den Antworten auf diese Frage entnommen habe : https://regexr.com/3u0d4
Vollständige Erklärung:
Da viele Antworten / Kommentare aufgetaucht sind, gibt es viele Formate für YouTube-Video-URLs. Sogar mehrere TLDs, bei denen sie als "gehostet" erscheinen können.
Sie können sich die vollständige Liste der Variationen ansehen, gegen die ich geprüft habe, indem Sie dem obigen Regexr-Link folgen.
Lassen Sie uns die RegExp aufschlüsseln.
^
Sperren Sie die Zeichenfolge an den Anfang der Zeichenfolge.(https?:\/\/)?
Optionale Protokolle http: // oder https: // Das?
macht das vorhergehende Element optional, so dasss
und dann die gesamte Gruppe (alles, was in Klammern eingeschlossen ist) optional sind.Ok, dieser nächste Teil ist das Fleisch davon. Grundsätzlich haben wir zwei Möglichkeiten, die verschiedenen Versionen von www.youtube.com/...[id] und die verkürzte Version youtu.be/[id].
Schließlich haben wir die Gruppe, um die Video-ID auszuwählen. Mindestens ein Zeichen, das eine Zahl, ein Buchstabe, ein Unterstrich oder ein Bindestrich ist.
Sie können viel mehr Details zu jedem Teil der Regex herausfinden, indem Sie über den Regexr-Link gehen und sehen, wie jeder Teil des Ausdrucks mit dem Text in der URL übereinstimmt.
quelle
Die beste Lösung (von 2019 bis 2020), die ich gefunden habe, ist folgende:
Ich habe es hier gefunden .
quelle
Da die YouTube-Video-IDs auf 11 Zeichen festgelegt sind , können
substring
wir die URL einfach direkt nach dem Teilen mit teilenv=
. Dann sind wir am Ende nicht auf das kaufmännische Und angewiesen.Schön und einfach :)
quelle
Ich habe alle Vorschläge zusammengefasst und hier ist die universelle und kurze Antwort auf diese Frage:
quelle
Java-Code: (Funktioniert für alle URLs:
)
Für DailyMotion:
quelle
Etwas strengere Version:
Getestet am:
quelle
Sie können den folgenden Code verwenden, um die YouTube-Video-ID von einer URL abzurufen:
quelle
Eine leicht veränderte Version von dem einen Mantish:
Dies setzt voraus, dass der Code immer 11 Zeichen umfasst. Ich verwende dies in ActionScript und bin mir nicht sicher, ob {11,11} in Javascript unterstützt wird. Unterstützung für & v = .... hinzugefügt (nur für den Fall)
quelle
Dies erfordert definitiv Regex:
In Ruby IRB kopieren:
Siehe für alle Testfälle: https://gist.github.com/blairanderson/b264a15a8faaac9c6318
quelle
Einer noch:
Es funktioniert mit jeder URL, die in diesem Thread angezeigt wird.
Es wird nicht funktionieren, wenn YouTube einen anderen Parameter mit 11 base64-Zeichen hinzufügt. Bis dahin ist es der einfache Weg.
quelle
Ich habe eine kleine Funktion erstellt, um die Video-ID aus einer Youtube-URL zu extrahieren, die unten zu sehen ist.
Diese Funktion extrahiert die Video-ID, auch wenn die URL mehrere Parameter enthält.
quelle
Dies kann Video-ID von jeder Art von YouTube-Links erhalten
quelle
Ich mochte Suryas Antwort. Nur ein Fall, in dem es nicht funktioniert ...
funktioniert nicht für
aktualisierte Version:
funktioniert für alle.
quelle
Probier diese -
quelle
Chris Nolet saubereres Beispiel für eine Lasnv-Antwort ist sehr gut, aber ich habe kürzlich herausgefunden, dass Regexp weitaus mehr als nötig übereinstimmt, wenn Sie versuchen, Ihren Youtube-Link in Text zu finden und zufälligen Text nach der Youtube-URL einzufügen. Verbesserte Antwort von Chris Nolet:
quelle
Zum Prüfen:
quelle
Nun, der Weg, dies mit einfachem Parsen zu tun, wäre: Alles beginnt nach dem ersten = Zeichen zum ersten & Zeichen.
Ich denke, sie hatten hier eine ähnliche Antwort:
Eine Vimeo-ID mit JavaScript analysieren?
quelle
&
?Wir wissen, dass diese Zeichen "? V =" niemals mehr als eins erscheinen können, aber 'v' kann irgendwie in der ID selbst erscheinen, also verwenden wir "? V =" als Trennzeichen. Sehen Sie, wie es hier funktioniert
quelle
Einfache Regex Wenn Sie die vollständige URL haben, halten Sie es einfach.
quelle
Ich hoffe es kann helfen
quelle
Kürzeste und effizienteste
quelle
Wie Webstrap in einem Kommentar erwähnt :
quelle