Quiero obtener la v=id
URL de YouTube con JavaScript (sin jQuery, JavaScript puro).
Ejemplos de formatos de URL de YouTube
http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW
http://www.youtube.com/watch?v=u8nQa1cJyX8
O cualquier otro formato de YouTube que contenga una ID de video en la URL.
Resultado de estos formatos
u8nQa1cJyX8
javascript
regex
url
youtube
Adán
fuente
fuente
Respuestas:
No necesita usar una expresión regular para esto.
fuente
https://youtu.be/{{video_id}}
url='https://youtu.be/{{video_id}}'; url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
Realicé una mejora en Regex proporcionada por "jeffreypriebe" porque necesitaba una especie de URL de YouTube que es la URL de los videos cuando están mirando a través de un canal.
Bueno no, pero esta es la función que he armado.
Estos son los tipos de URL compatibles
Se puede encontrar en [http://web.archive.org/web/20160926134334/] http://lasnv.net/foro/839/Javascript_parsear_URL_de_YouTube
fuente
/.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/
luego use enmatch[1]
lugar dematch[7]
(que me pareció un poco arbitrario). También corrige el error señalado por WebDev.Simplifiqué un poco la respuesta de Lasnv.
También corrige el error que describe WebDeb.
Aquí está:
Aquí hay un enlace regexer para jugar: http://regexr.com/3dnqv
fuente
Ninguno de estos funcionó en el fregadero de la cocina a partir del 1/1/2015, especialmente las URL sin http / s protocal y con el dominio youtube-nocookie. Así que aquí hay una versión modificada que funciona en todas estas versiones de Youtube:
fuente
^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]+).*
(es decir, youtube.com/watch?v= no coincidirá)Probado en:
Inspirado por esta otra respuesta .
fuente
Dado que YouTube tiene una variedad de estilos de URL, creo que Regex es una mejor solución. Aquí está mi expresión regular:
El grupo 3 tiene su ID de YouTube
Ejemplos de URL de YouTube (actualmente, incluido el "estilo de URL de inserción heredado"): el Regex anterior funciona en todos ellos:
Punta de sombrero para Lasnv
fuente
"domain.com/embed/file.txt"
,"/tv/"
y"Has anyone seen my watch?"
. Ver: mi respuesta a una pregunta similar para una solución mucho más precisa.Creé una función que prueba la entrada de un usuario para Youtube, Soundcloud o Vimeo, para poder crear un diseño más continuo con medios integrados. Esta función detecta y devuelve un objeto con dos propiedades: "tipo" e "id". El tipo puede ser "youtube", "vimeo" o "soundcloud" y la propiedad "id" es la identificación de medios única.
En el sitio utilizo un volcado de área de texto, donde el usuario puede pegar cualquier tipo de enlace o código de incrustación, incluida la incrustación de iFrame de vimeo y youtube.
fuente
Tarde al juego aquí, pero he combinado dos excelentes respuestas de mantish y jw. Primero, la expresión regular modificada:
Aquí está el código de prueba (he agregado los casos de prueba originales de mantish a los más desagradables de jw):
Versión experimental para manejar las URL de m.youtube mencionadas en los comentarios:
Requiere
parsed[2]
ser cambiado aparsed[3]
dos lugares en las pruebas (que luego pasa con lasm.youtube
URL agregadas a las pruebas). Avísame si ves problemas.fuente
http://youtu.be/
si agrego el,/
lo marca como válido. Su uso en(value) => /^.*(youtu\.be\/|vi?\/|u\/\w\/|embed\/|\?vi?=|\&vi?=)([^#\&\?]*).*/.test(value)
tl; dr.
Coincide con todos los ejemplos de URL en esta pregunta y más.
La identificación siempre estará en el grupo 7 del partido.
Ejemplos en vivo de todas las URL que obtuve de las respuestas a esta pregunta: https://regexr.com/3u0d4
Explicación completa:
Como han aparecido muchas respuestas / comentarios, hay muchos formatos para las URL de video de youtube. Incluso múltiples TLD donde pueden parecer "alojados".
Puede consultar la lista completa de variaciones que verifiqué siguiendo el enlace regexr anterior.
Vamos a romper el RegExp.
^
Bloquee la cadena al inicio de la cadena.(https?:\/\/)?
Protocolos opcionales http: // o https: // Esto?
hace que el elemento anterior sea opcional, por lo que els
y luego todo el grupo (todo lo que se incluye entre paréntesis) son opcionales.Ok, la siguiente parte es la carne de esto. Básicamente tenemos dos opciones, las diversas versiones de www.youtube.com/...[id] y el enlace acortó la versión youtu.be/[id].
Finalmente tenemos el grupo para seleccionar la ID del video. Al menos un carácter que es un número, letra, guión bajo o guión.
Puede encontrar muchos más detalles sobre cada parte de la expresión regular dirigiéndose al enlace regexr y ver cómo cada parte de la expresión coincide con el texto en la url.
fuente
La mejor solución (de 2019-2020) que encontré es que:
Lo encontré aquí .
fuente
Dado que los identificadores de video de YouTube tienen 11 caracteres , podemos simplemente
substring
dividir la URL conv=
. Entonces no somos dependientes del ampersand al final.Agradable y simple :)
fuente
He resumido todas las sugerencias y aquí está la respuesta universal y breve a esta pregunta:
fuente
Código Java: (Funciona para todas las URL:
)
Para DailyMotion:
fuente
Versión ligeramente más estricta:
Probado en:
fuente
Puede usar el siguiente código para obtener la identificación de video de YouTube desde una URL:
fuente
Una versión ligeramente modificada del mantish publicado:
Esto supone que el código siempre tiene 11 caracteres. Estoy usando esto en ActionScript, no estoy seguro si {11,11} es compatible con Javascript. También se agregó soporte para & v = .... (por si acaso)
fuente
Esto definitivamente requiere regex:
Copiar en Ruby IRB:
Consulte todos los casos de prueba: https://gist.github.com/blairanderson/b264a15a8faaac9c6318
fuente
Uno mas:
Funciona con cualquier URL mostrada en este hilo.
No funcionará cuando YouTube agregue algún otro parámetro con 11 caracteres base64. Hasta entonces es el camino fácil.
fuente
Hice una pequeña función para extraer la identificación del video de una url de Youtube que se puede ver a continuación.
Esta función extraerá la identificación del video incluso si hay múltiples parámetros en la url.
fuente
Esto puede obtener la identificación de video de cualquier tipo de enlaces de youtube
fuente
Me gustó la respuesta de Surya ... Solo un caso en el que no funcionará ...
no funciona para
Versión actualizada:
Funciona para todos.
fuente
Prueba este -
fuente
El ejemplo más limpio de Chris Nolet de la respuesta de Lasnv es muy bueno, pero recientemente descubrí que si intentas encontrar tu enlace de youtube en el texto y poner un texto aleatorio después de la url de youtube, regexp coincide mucho más de lo necesario. Respuesta mejorada de Chris Nolet:
fuente
Para las pruebas:
fuente
Bueno, la forma de hacerlo con un análisis simple sería: comenzar todo después del primero = señal para el primer y señal.
Creo que tenían una respuesta similar aquí:
¿Analizando una ID de Vimeo usando JavaScript?
fuente
&
?Sabemos que estos caracteres "? V =" nunca pueden aparecer más que unos, pero 'v' puede aparecer de alguna manera en el Id mismo, así que usamos "? V =" como delimitador. Véalo trabajando aquí
fuente
Regex simple si tiene la URL completa, manténgala simple.
fuente
espero que pueda ayudar
fuente
Más corto y eficiente
fuente
Como la correa web mencionada en un comentario :
fuente