测试# 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,以确保它的格式正确。
是否有办法检查以前的捕获组是否存在?
谢谢!
检查
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)+/?$