【发布时间】:2014-07-04 11:49:15
【问题描述】:
我正在尝试将文件名参数与正则表达式匹配以进行验证。数字后面的连字符有问题...
字符串:Article_RAR_Scout_13-03-14.pptx
正则表达式:
private bool IsValidFileName(string FileName)
{
if (Regex.IsMatch(FileName, @"^Article[A-Z]{3}_Scout_[0-31]-[0-12]-[0-99]\.pptx$"))
{
return true;
}
else
{
throw new Exception("Please provide a correct file name (e.g. Drillinginfo_WAF_Scout_13-03-14.pptx");
}
}
【问题讨论】:
-
您的问题不仅仅是匹配连字符。您将无法将您的号码匹配为 [0-31]、[0-12]。和 [0-99] 不是有效的字符类。我建议您寻找 RegEx 来匹配日期,因为这似乎是您正在尝试做的事情。例如,Need regular expression for validating date in dd-MMM-yyyy format
-
在 regexr.com 上检查您的正则表达式,这很有帮助:)
-
@CodeCaster 我不同意这个副本,前提是这里的 OP 问题比标题大得多。匹配日期可能有更好的重复。
-
@psubsee2003 那么“这个正则表达式不起作用,为我修复它”应该被关闭,因为它太宽泛了。此正则表达式的每个子问题都已在此站点上解决,请随时查找解决 OP 问题的其他问题并将它们链接到 cmets。
-
@CodeCaster 并不反对。我从来没有说过它不是太宽泛或不应该关闭(因此我没有重新投票),我只是指出 OP 的问题不是连字符而是匹配日期。