测试# 160;如果# 160;捕获# 160;组# 160;成功# 160;上# 160;定期# 160;表达式# 1

本文关键字:定期 表达式 捕获 如果 测试 成功 | 更新日期: 2023-09-27 18:02:14

我试图验证视频链接url。特别是,验证共享链接url与嵌入视频src url。我当前的正则表达式看起来像这样来验证来自vimeo.com的两种不同类型的视频URL:

^(?i)(http[s]?:'/'/)?(w{3}'.)?(?'gp1'player'.)vimeo'.com'/(?(k'gp1')video'/|())(?(('w)+'/?$

我试图使用相同的正则表达式来验证以下url(下面的链接是假的,所以不要点击它们):

  • http://www.vimeo.com/123FEDSE
  • http://player.vimeo.com/video/123FEDSE

我似乎不能让正则表达式工作在两种情况下,希望一个正则表达式测试两种情况,如果可能的话。

Thanks in Advance.

编辑:谢谢你的帖子。看起来,如果用户传入一个无效的url,正则表达式仍然通过:例如,如果用户不小心提供了http://player.vimeo.com/123FEDSE而不是有效的http://player.vimeo.com/video/123FEDSE,它将通过regex验证。我正在尝试使用正则表达式来验证URL,以确保它的格式正确。

是否有办法检查以前的捕获组是否存在?

谢谢!

测试# 160;如果# 160;捕获# 160;组# 160;成功# 160;上# 160;定期# 160;表达式# 1

检查

Match match = Regex.Match(input, pattern); 
    if(match.Success) { 
       //do something 
     } 

. net正则表达式语言与您编写正则表达式所用的语言有点不同。

下面是一个近似的例子:

string url1 = "http://www.vimeo.com/123FEDSE";
string url2 = "http://player.vimeo.com/video/123FEDSE";
string pattern = @"^(https?://)?(www'.)?(player'.)?vimeo'.com/(video/)?('w)+/?$";
bool result1 = Regex.IsMatch(url1, pattern, RegexOptions.IgnoreCase);
bool result2 = Regex.IsMatch(url2, pattern, RegexOptions.IgnoreCase);
^http://[^<>'"]*?vimeo.com/[^"'<>]*?$
^(http[s]?://)?(w{3}'.)?(player'.)?vimeo'.com/(video/)?('w)+/?$