Javascript youtube视频的正则表达式匹配模式能否以非贪婪的方式完成?

Javascript youtube视频的正则表达式匹配模式能否以非贪婪的方式完成?,javascript,regex,regex-greedy,Javascript,Regex,Regex Greedy,我有下面的正则表达式模式,它将youtube视频匹配到我独特的[URL]youtube URL[/URL]模式中 提取youtube视频ID几乎是万无一失的,但是如果我将两个youtube视频放在同一行上,那么匹配结果将只有一个而不是两个。这个图案正试图成为一个整体 例如,如果我将两个youtube视频放在不同的行中,如下所示: [url]https://www.youtube.com/watch?v=L9-Sr8RPty4[/url] [url]https://www.youtube.com/

我有下面的正则表达式模式,它将youtube视频匹配到我独特的[URL]youtube URL[/URL]模式中

提取youtube视频ID几乎是万无一失的,但是如果我将两个youtube视频放在同一行上,那么匹配结果将只有一个而不是两个。这个图案正试图成为一个整体

例如,如果我将两个youtube视频放在不同的行中,如下所示:

[url]https://www.youtube.com/watch?v=L9-Sr8RPty4[/url]
[url]https://www.youtube.com/watch?v=L9-Sr8RPty4[/url]
它工作得非常好

但如果我尝试将这两个视频合并到同一行,则会出现问题,这只会导致一个格式错误的匹配:

[url]https://www.youtube.com/watch?v=L9-Sr8RPty4[/url] [url]https://www.youtube.com/watch?v=L9-Sr8RPty4[/url]
顺便说一句,我是在Javascript中使用.replace函数完成所有这些工作的


谢谢大家!

这是因为中间的。+或。*进行匿名匹配

\[(url|u2b)](http|https):\/\/(m\.|www\.)?(?:youtube\.com\/(?:[^\/]+\/(?:(?!\/?\1).)*\/|(?:v|e(?:mbed)?\/|(?:(?!\/?\1).)*[?&]v=)|youtu\.be\/))([^"&?\/ ]{11})(.*?)\[\/(url|u2b)]
我只是在两者之间换了一个。+还是。*?到?:?!\/\1.*. 它在匹配每个字符之前检查条件。条件是,它检查要匹配的字符是否不是第一个捕获组中存在的字符串的/optional或u的起始字符

\[(url|u2b)](http|https):\/\/(m\.|www\.)?(?:youtube\.com\/(?:[^\/]+\/(?:(?!\/?\1).)*\/|(?:v|e(?:mbed)?\/|(?:(?!\/?\1).)*[?&]v=)|youtu\.be\/))([^"&?\/ ]{11})(.*?)\[\/(url|u2b)]