使用正则表达式检查string / url是否不以指定的字符串开头

时间:2011-12-01 22:59:46

标签: regex asp.net-mvc-3

 [RegularExpression(), ErrorMessage = "Youtube link must start with www.youtube.com/watch?v=")]

我需要检查链接是否不以:http://www.youtube.com/watch?v=

开头

3 个答案:

答案 0 :(得分:3)

我刚刚创建了一个MVC项目并测试了以下内容:

[RegularExpression("^((?!http://www.youtube.com/watch\\?v=).)*$")]

这似乎有效。

可能会找到更多信息here

如果您需要检查文本是否以youtube链接开头(而不是未开始),那么您可以使用:

[RegularExpression("http://www.youtube.com/watch\\?v=.*")]

答案 1 :(得分:0)

试试这段代码,Alan

using System;
using System.Text.RegularExpressions;

namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      string txt="http://www.youtube.com/watch?v=";

      string re1="(http:\\/\\/www\\.youtube\\.com\\/watch\\?v=)";   
      string re2="(www\\.youtube\\.com)";

      Regex r = new Regex(re1+re2,RegexOptions.IgnoreCase|RegexOptions.Singleline);
      Match m = r.Match(txt);
      if (m.Success)
      {
            String httpurl1=m.Groups[1].ToString();
            String file1=m.Groups[2].ToString();
            Console.Write("("+httpurl1.ToString()+")"+"("+file1.ToString()+")"+"\n");
      }
      Console.ReadLine();
    }
  }
}

答案 2 :(得分:0)

如果您只想检查该特定字符串,则不需要正则表达式。 只需执行int position = string.IndexOf("http://www.youtube.com/watch?v=");之类的操作并检查位置是否为0

编辑:
如果你真的需要一个正则表达式,你可以试试这个:/^(?!^http:\/\/www\.youtube\.com/watch\?v=).*/