【问题标题】:use regex validator to ensure a string contains particular substring使用正则表达式验证器来确保字符串包含特定的子字符串
【发布时间】:2011-12-01 21:29:40
【问题描述】:

我想使用正则表达式验证器来确保某个字符串变量包含子字符串"www.youtube.com/watch?v=",我该怎么做?

[RegularExpression()]
[Required(ErrorMessage = "Youtube link is Required")]
[StringLength(100, ErrorMessage="Youtube link cannot exceed 50 characters")]
public string YoutubeLink { get; set; }

【问题讨论】:

  • 您希望得到哪种语言的答案?此外,还有很多资源展示了如何使用正则表达式来做到这一点
  • 从您的代码看来,我们正在谈论 c#(如果我错了,请纠正我(并且可能添加一个适当的标签)。在这种情况下:您为什么需要一个正则表达式?@ 987654323@ 将返回子字符串是否包含在YoutubeLink 中。如果我对语言有误,我仍然会猜测这样的方法会存在

标签: regex asp.net-mvc-3


【解决方案1】:
if (YoutubeLink.Contains("www.youtube.com/watch?v="))
{
   //...
}

http://msdn.microsoft.com/en-us/library/dy85x1sa.aspx

要使用正则表达式属性,您必须指定要使用的正则表达式:

[RegularExpression("www\\.youtube\\.com/watch\\?v=", ErrorMessage = "Link is incorrect")]
public string YoutubeLink { get; set; } 

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.regularexpressionattribute.aspx


我认为您可能想要检查任何类型的 URL 开头。在这种情况下,您将使用 @"^(http://)?(www\.)?youtube\.com/watch\?v=" 作为正则表达式字符串。

See an example of what this would match

【讨论】:

  • 我想使用 [RegularExpression()] 验证器
  • @ibiza:您应该引用.s,并且您必须引用?@"www\.youtube\.com/watch\?v="
  • 抱歉我要检查字符串是否以 www.youtube.com/watch?v= 开头,如果它相同
  • 按原样制定(我需要...开始),然后使用^http://youtube\.com/watch\?v= 作为正则表达式。但这不会匹配使用 www 的 URL。在里面。
  • @AlanBudzinski:您的字符串被 StackOverflow 软件解释为一个链接,因此我们无法准确地看到它的样子。您需要将其包含在反引号字符中,`,以告诉软件将您的字符串视为源代码。
【解决方案2】:

可能更容易使用(Python)之类的东西:

ytlink  = 'www.youtube.com/watch?v='
if(ytlink in yourfrase):
  doYourLogic()
else:
  smthElse()

如果我理解你的问题,请纠正我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 2017-10-08
    • 2010-10-06
    • 2015-04-10
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多