Regex 用于提取YouTube ID和时间序列的正则表达式

Regex 用于提取YouTube ID和时间序列的正则表达式,regex,string,regex-lookarounds,regex-group,regex-greedy,Regex,String,Regex Lookarounds,Regex Group,Regex Greedy,我想从Youtube URL中提取视频ID(字符串)和序列整数(如果可用) 输入 我尝试过这种模式,但不起作用: ^https?://.*(?:youtu.be/|v/|u/\w/|embed/|watch?v=)([^#&?]*).*$ 我该如何解决这个问题?你很接近,但没有正确地避开斜线。虽然每种语言可能有所不同,但我不确定。不管怎样,这是我得到的有效正则表达式: ^https?:\/\/.(:youtu.be\/|v\/|u\/\w\/|embed\/|watch?v=)([^和

我想从Youtube URL中提取视频ID(字符串)和序列整数(如果可用)

输入 我尝试过这种模式,但不起作用:

^https?://.*(?:youtu.be/|v/|u/\w/|embed/|watch?v=)([^#&?]*).*$

我该如何解决这个问题?

你很接近,但没有正确地避开斜线。虽然每种语言可能有所不同,但我不确定。不管怎样,这是我得到的有效正则表达式:

^https?:\/\/.(:youtu.be\/|v\/|u\/\w\/|embed\/|watch?v=)([^和?]*)。(>t=([0-9]+).$


有关导出到不同语言的测试和能力的信息,请参见。您非常接近,但没有正确避开斜杠。虽然每种语言可能有所不同,但我不确定。不管怎样,这是我得到的有效正则表达式:

^https?:\/\/.(:youtu.be\/|v\/|u\/\w\/|embed\/|watch?v=)([^和?]*)。(>t=([0-9]+).$


请参阅测试和导出到不同语言的能力

如果我们只希望匹配问题中列出的情况,那么我们可能会将表达式简化为类似于:

(?:.+v=|.+\.be\/)(.+?)($|&.+)
因为,我猜我们可能并不真的想验证URL。然而,如果我们想增加更多的边界,我们可以这样做

在这里,我们在非捕获组中使用逻辑OR连接两个条件:

(?:.+v=|.+\.be\/)
(.+?)
(?:$|&.+)
然后,我们使用捕获组收集所需的ID:

(?:.+v=|.+\.be\/)
(.+?)
(?:$|&.+)
最后,我们添加一个右边界:

($|&.+)
这也适用于右边界(使用非捕获组):


这个表达式可能很容易修改,如果出现任何其他URL,我们只需在所需ID的左侧和右侧使用逻辑OR添加新的边界

const regex=/(?:.+v=.+\.be\/)(.+?)($)&.+)/gm;
常量str=`https://www.youtube.com/watch?v=doXt8abo3IY
https://youtu.be/FIqBQ-CxAfQ
http://www.youtube.com/watch?v=MlOSMl33CNA&t=0m4s`;
常量subst=`1`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);

log('替换结果:',结果)如果我们只希望匹配问题中列出的情况,那么我们可能会将表达式简化为类似于:

(?:.+v=|.+\.be\/)(.+?)($|&.+)
因为,我猜我们可能并不真的想验证URL。然而,如果我们想增加更多的边界,我们可以这样做

在这里,我们在非捕获组中使用逻辑OR连接两个条件:

(?:.+v=|.+\.be\/)
(.+?)
(?:$|&.+)
然后,我们使用捕获组收集所需的ID:

(?:.+v=|.+\.be\/)
(.+?)
(?:$|&.+)
最后,我们添加一个右边界:

($|&.+)
这也适用于右边界(使用非捕获组):


这个表达式可能很容易修改,如果出现任何其他URL,我们只需在所需ID的左侧和右侧使用逻辑OR添加新的边界

const regex=/(?:.+v=.+\.be\/)(.+?)($)&.+)/gm;
常量str=`https://www.youtube.com/watch?v=doXt8abo3IY
https://youtu.be/FIqBQ-CxAfQ
http://www.youtube.com/watch?v=MlOSMl33CNA&t=0m4s`;
常量subst=`1`;
//被替换的值将包含在结果变量中
const result=str.replace(regex,subst);

log('替换结果:',结果)@Emma,完成了:)提前谢谢Emma@艾玛,完成了:)提前谢谢艾玛!非常感谢,但我无法检索序列(“t”)非常感谢,但我无法检索序列(“t”)