这应该很简单(当你知道答案的时候)。我想给给予张贴的解决方案一个尝试。我的问题是:如何使用JavaScript正则表达式获取给定URL的参数值?我有:
http://www.youtube.com/watch?v=Ahg6qcgoay4
字符串我需要:
Ahg6qcgoay4
型我试探着:
http://www.youtube.com/watch\\?v=(w{11})
型但是:我很烂......
jutyujz01#
你几乎已经做到了,只需要转义特殊的正则表达式字符:
regex = /http\:\/\/www\.youtube\.com\/watch\?v=([\w-]{11})/; url = 'http://www.youtube.com/watch?v=Ahg6qcgoay4'; id = url.match(regex)[1]; // id = 'Ahg6qcgoay4'
字符串
**编辑:**修复了soupagain的正则表达式。
0wi1tuuw2#
你为什么不把绳子拆开URL上的示例
var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"
字符串你可以做一个分裂,
var params = url.split("?")[1].split("&");
型你将得到一个字符串数组,参数作为名称值对,“=”作为参数。
axr492tv3#
没有测试,但这应该工作:
/\?v=([a-z0-9\-]+)\&?/i
fd3cxomn4#
v是一个查询参数,技术上需要考虑情况ala:http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk在.NET中,我建议使用System.Web.HttpUtility.ParseQueryString
System.Web.HttpUtility.ParseQueryString
HttpUtility.ParseQueryString(url)["v"];
字符串你甚至不需要检查键,因为如果键不在集合中,它将返回null。
zengzsys5#
我知道这个问题是老的,已经回答,但这也可以是一个解决方案
\b[\w-]+$
字符串我查了这两个网址
http://www.youtube.com/watch?v=Ahg6qcgoay4 https://www.youtube.com/watch?v=22hUHCr-Tos
型DEMO
dxxyhpgq6#
我使用单独的自定义函数获取所有URL参数和URL部分。对于URL参数,(这是URI字符串的最后一部分,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; }
字符串上面的函数将返回一个由url变量组成的数组。对于URL部件或函数,(即http://domain.tld/urlpart/?x=a&y=B)我使用简单的uri分割,
function getUrlParams() { var vars = {}; var parts = window.location.href.split('/' ); return parts; }
型您甚至可以将它们合并结合起来,以便能够在页面或JavaScript中使用单个调用。
wd2eg0qa7#
此RegEx支持多种YouTube URL格式。
/^(?:https?:\/\/)?(?:m\.|www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|shorts\/|watch\?.+&v=))((\w|-){11})(?:\S+)?$/
字符串支持的URL格式
const ytUrlFormats = { normal: 'https://www.youtube.com/watch?v=12345678901', share: 'https://youtu.be/12345678902', shareWithStartTime: 'https://youtu.be/12345678903?t=6', mobileBrowserUrl: 'https://m.youtube.com/watch?v=12345678904&list=RD12345678901&start_radio=1', long: 'https://www.youtube.com/watch?v=12345678905&list=RD12345678905&start_radio=1&rv=smKgVuS', longWithStartTime: 'https://www.youtube.com/watch?v=12345678906&list=RD12345678901&start_radio=1&rv=12345678901&t=38', shorts: 'https://youtube.com/shorts/12345678907', };
型您可以在TS Playground中进行检查(在控制台中运行并检查)
7条答案
按热度按时间jutyujz01#
你几乎已经做到了,只需要转义特殊的正则表达式字符:
字符串
**编辑:**修复了soupagain的正则表达式。
0wi1tuuw2#
你为什么不把绳子拆开
URL上的示例
字符串
你可以做一个分裂,
型
你将得到一个字符串数组,参数作为名称值对,“=”作为参数。
axr492tv3#
没有测试,但这应该工作:
字符串
fd3cxomn4#
v是一个查询参数,技术上需要考虑情况ala:http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk
在.NET中,我建议使用
System.Web.HttpUtility.ParseQueryString
字符串
你甚至不需要检查键,因为如果键不在集合中,它将返回null。
zengzsys5#
我知道这个问题是老的,已经回答,但这也可以是一个解决方案
字符串
我查了这两个网址
型
DEMO
dxxyhpgq6#
我使用单独的自定义函数获取所有URL参数和URL部分。对于URL参数,(这是URI字符串的最后一部分,http://domain.tld/urlpart/?x=a&y=B
字符串
上面的函数将返回一个由url变量组成的数组。
对于URL部件或函数,(即http://domain.tld/urlpart/?x=a&y=B)我使用简单的uri分割,
型
您甚至可以将它们合并结合起来,以便能够在页面或JavaScript中使用单个调用。
wd2eg0qa7#
此RegEx支持多种YouTube URL格式。
字符串
支持的URL格式
型
您可以在TS Playground中进行检查(在控制台中运行并检查)