连字符字符串上的正则表达式?c#

本文关键字:正则表达式 字符串 连字符 | 更新日期: 2023-09-27 18:11:39

我试图匹配一个文件名参数与一个正则表达式验证。我在数字后面有连字符的问题…

字符串: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");
        }                     
    }

连字符字符串上的正则表达式?c#

在字符类0到9中[0-9]只可能,0到31 [0-31]将不可能。这是你的正则表达式的问题,而不是与连字符。你的正则表达式应该是

^Article_[A-Z]{3}_Scout_(?:0[1-9]|[1-2][0-9]|3[01])-(?:0[1-9]|1[012])-(?:[1-9][0-9]|0[1-9])'.pptx
演示