通过regex验证c#中的文件名

Ger*_*ald 1 c# regex

我想用这种格式验证文件名:LetterNumber_Enrollment_YYYYMMDD_HHMM.xml

string filename = "Try123_Enrollment_20130102_1200.xml";
Regex pattern = new Regex(@"[a-zA-z]_Enrollment_[0-9]{6}_[0-9]{4}\\.xml");
if (pattern.IsMatch(filename))
{
return isValid = true;
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法让它发挥作用.

我错过了什么?

Ler*_*eri 6

您不是在开头匹配数字.您的模式应该是:^[A-Za-z0-9]+_Enrollment_[0-9]{8}_[0-9]{4}\.xml$匹配给定的字符串.

变化:

  1. 您的字符串以第一个_符号前的字母数字字符串开头,因此您需要检查两者(字母和数字).
  2. Environment_部分之后,您有长度为8而不是6的数字.
  3. 不需要加倍\.你只需要逃避点(即\.).

演示应用:

using System;
using System.Text.RegularExpressions;

class Test {
    static void Main() {
        string filename = "Try123_Enrollment_20130102_1200.xml";
        Regex pattern = new Regex(@"^[A-Za-z0-9]+_Enrollment_[0-9]{8}_[0-9]{4}\.xml$");
        if (pattern.IsMatch(filename))
        {
            Console.WriteLine("Matched");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)