【问题标题】:Javascript Regex get each matching [duplicate]Javascript Regex 获取每个匹配项[重复]
【发布时间】:2016-10-08 13:34:44
【问题描述】:

我想在页面中找到每个 youtube 链接。我在 StackOverflow 上发现了一些我修改过的正则表达式,但是当我有一个带有两个 youtube linq 的 html 代码时,结果是一个匹配,例如

youtube.com?v=videoid<div></div>youtube.com?v=videoid2

我只想获取每个 youtube 链接。

我的正则表达式是:

/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([\w|-|_]{11})/

有人可以帮帮我吗?

感谢和抱歉英语不好。

【问题讨论】:

  • input.split(/(?:<[^<>]+>)+/)
  • 感谢 Wiktor,抱歉重复回答
  • 我决定给你一个,因为你确实尝试了一些东西,不需要为受骗而感到抱歉。

标签: javascript regex youtube


【解决方案1】:

尝试在正则表达式的末尾添加“g”修饰符,如下所示:

/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([\w|-|_]{11})/g

这意味着全局(获取所有匹配项)

【讨论】:

  • 我怀疑你真的想使用[?&],因为它匹配?或&,或a,或m,或p或;。
  • 我的意思是使用 /g 修饰符来获取所有出现的正则表达式匹配。正则表达式的其余部分来自 Pascal Mormin,我只是复制/粘贴它以提供完整的功能示例
  • [\w|-|_] 我很确定这应该是 [\w-_] 否则它匹配字母数字、_、-、|
  • 感谢您的回答。我选择添加 /g 并拆分字符串。这似乎很好。 mystring.match(/(https?:\/\/)?(www\.)?(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v |(e(?:mbed)?)|watch)\/|.*v=)|youtu\.be\/)([\w-_)]{11})/g)[0].split( /(?:]+>)+/)
猜你喜欢
  • 2018-01-24
  • 2020-03-06
  • 1970-01-01
  • 2017-12-14
  • 2015-01-22
  • 2019-08-03
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
相关资源
最近更新 更多