gpt4 book ai didi

regex - ColdFusion 正则表达式匹配有效的 Youtube 链接(需要改进)

转载 作者:行者123 更新时间:2023-12-01 01:04:09 25 4
gpt4 key购买 nike

尽管这里已经多次提出类似的问题,但我收到了修改现有正则表达式行以改进它的请求。很确定这也会帮助处于相同情况的其他人。

我想要实现的是使用 匹配有效的 YouTube 视频 URL。 ColdFusion 正则表达式。

这是我目前所拥有的:

ReMatch('^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^##\&\?]*).*',mylink)

这适用于以下 URL 类型:
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg

但是,无论出于何种原因,以下 URL 也会匹配:
http://www.theguardian.com/media/2013/nov/29/russell-brand-rages-sun-rupert-murdoch

我怎样才能修改代码更准确一点?也许确保“youtu”部分对链接至关重要会有所帮助,因为我认为当前的正则表达式仅将其作为可选部分之一?问题是我无法自己修改此代码,因此在这里寻求帮助。

//////已编辑////////////////

感谢下面 Omega 的回答,稍加修改,这里是适用于我的案例的模式:
ReMatch('(http:\/\/)(?:www\.)?youtu(?:be\.com\/(?:watch\?|user\/|v\/|embed\/)\S+|\.be\/\S+)',mylink)

此外,值得注意的是,由于 ColdFusion 不支持,我不得不从建议的模式中删除后视部分。

最佳答案

(?<=http:\/\/)(?:www\.)?youtu(?:be\.com\/(?:watch\?|user\/|v\/|embed\/)\S+|\.be\/\S+)

this demo .

Regular expression visualization

关于regex - ColdFusion 正则表达式匹配有效的 Youtube 链接(需要改进),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20289528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com