在正则表达式(Javascript)中分隔捕获组[重复]

Posted

技术标签:

【中文标题】在正则表达式(Javascript)中分隔捕获组[重复]【英文标题】:Delimit capture group in regex (Javascript) [duplicate] 【发布时间】:2022-01-22 01:22:33 【问题描述】:

我有以下正则表达式:/^https:\/\/([^\.]+\.)?youtube\.com\/watch\?v=(.*)/

这是匹配的 youtube 网址。

正则表达式的最后一部分是一个捕获组,应该与视频的 id ?v=(.*)/ 匹配 例如在https://www.youtube.com/watch?v=l_MHkr_uYww 中,它将返回l_MHkr_uYww

这部分有效,但是在 id 之后,您可以有几个参数并以例如结束

https://www.youtube.com/watch?v=l_MHkr_uYww&ab_channel=TeslaIntelligenceUK

然后当前捕获组将返回l_MHkr_uYww&ab_channel=TeslaIntelligenceUK

我想更改正则表达式,以便当前捕获组只匹配,直到找到&,所以我只得到 id 而不是额外参数

【问题讨论】:

[^&]替换. 【参考方案1】:

改为这样做:

^https:\/\/(?:[^\.]+\.)?youtube\.com\/watch\?v=([^&\s]*)

不捕获所有内容 (.),只捕获不是 & 的非空白字符。

Demo

【讨论】:

以上是关于在正则表达式(Javascript)中分隔捕获组[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何更改字符串中分隔两种货币的逗号?

在 Javascript 中用大写替换正则表达式捕获组

Javascript:检查正则表达式是不是包含捕获组而不执行它[关闭]

[javascript] 获取正则子表达式里的内容

正则表达式组捕获[重复]

捕获组之前或捕获组之后的正则表达式,具有单个捕获组