测试是否捕获组成功地在正则表达式C#.NET

时间:2011-07-15 03:20:01

标签: c# regex

我想验证视频链接网址。特别是,验证共享链接网址与嵌入视频SRC的URL。我的当前正则表达式看起来像这样,以验证两种不同类型的视频的URL从vimeo.com:

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

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

我似乎无法获得正则表达式这两种情况下工作,想一个正则表达式,如果能够测试这两种情况。

由于提前。

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

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

谢谢!

4 个答案:

答案 0 :(得分:2)

检查

Match match = Regex.Match(input, pattern); 

    if(match.Success) { 
       //do something 
     } 

答案 1 :(得分:0)

.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);

答案 2 :(得分:0)

^http://[^<>'"]*?vimeo.com/[^"'<>]*?$

答案 3 :(得分:0)

^(http[s]?://)?(w{3}\.)?(player\.)?vimeo\.com/(video/)?(\w)+/?$