【问题标题】:Javascript - Regex Vimeo IDJavascript - 正则表达式 Vimeo ID
【发布时间】:2023-03-17 09:47:01
【问题描述】:

我正在使用此正则表达式从 url 获取 Vimeo 视频 ID:

/\/\/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^\/]*)\/videos\/|album\/(?:\d+)\/video\/|video\/|)(\d+)(?:[a-zA-Z0-9_\-]+)?/i

但是,当我尝试验证它时,这个正则表达式似乎有一些错字和问题,这要归功于例如 JSLint:

Expected a regexp factor and instead saw ')'.

我找不到问题的确切位置。

【问题讨论】:

  • 由于您使用的是正则表达式,因此认为 JSLint 是错误的。
  • 哼...我想我发现我的错误了,我有一个 |在茫茫荒野中,我只需要将“video\/|)(\d+)”替换为“video\/)?(\d+)”。它工作正常并且有效。
  • 啊 - 但你原来的正则表达式也是如此!空的or,如(a|) 是有效的;它将匹配 a 或不匹配。所以 JSLint 错了。 (也许这将是一个很好的答案。使用 JSLint 是一种很好的做法,但需要注意的是它仍然只是由人类编写的。)
  • 我的第二次尝试是否会与空 or 具有相同的行为?我真的不是正则表达式专家......
  • 好的。谢谢您的帮助。我将使用regex101.com 测试所有可能性,并检查如果 JSLint 发出警告,最好的解决方案是什么......

标签: javascript regex vimeo


【解决方案1】:

JSLint 抱怨 video\/| 上的管道,忽略此错误是安全的。

var subject = "https://vimeo.com/195940605";
var result = subject.match(/(?:www\.|player\.)?vimeo.com\/(?:channels\/(?:\w+\/)?|groups\/(?:[^\/]*)\/videos\/|album\/(?:\d+)\/video\/|video\/|)(\d+)(?:[a-zA-Z0-9_\-]+)?/i);
document.write(result[0]);

【讨论】:

  • 您的意思是因为它不是真正的错误,所以可以安全地忽略它吗?我相信它也会影响比赛结果。
猜你喜欢
  • 2018-02-25
  • 1970-01-01
  • 2013-02-24
  • 2013-06-13
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
  • 2012-01-16
  • 1970-01-01
相关资源
最近更新 更多