【发布时间】:2014-12-14 05:25:09
【问题描述】:
我有以下正则表达式,它已经在三个不同的网站上进行了测试,以匹配所有 YouTube 链接,并捕获视频 ID 和可选的播放列表 ID。尽管如此,我的 Node 应用程序除了视频 ID 之外什么都没有接收到:
/(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((?:\w|-|_){11})(?:(?:\?|\&)index=((?:\d){1,3}))?(?:(?:\?|\&)list=((?:\w|-|_){24}))?(?:\S+)?/g
我的实际代码:
var youtube = /(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=))((?:\w|-|_){11})(?:(?:\?|\&)index=((?:\d){1,3}))?(?:(?:\?|\&)list=((?:\w|-|_){24}))?(?:\S+)?/g;
ansCopy = ansCopy.replace(youtube, "^~$1~^~$3~^");
使用“http://www.youtube.com/watch?v=VWKdcalZTaA&list=UUlucBMqhrYW4PWuIp8Um_cg&index=46”作为测试字符串,这应该会产生字符串:
"^~VWKdcalZTaA~^~UUlucBMqhrYW4PWuIp8Um_cg~^"
但它反而会产生:
"^~VWKdcalZTaA~^~~^"
【问题讨论】:
标签: javascript regex node.js hyperlink youtube