C# 自定义正则表达式代码中的CompleteMetory

C# 自定义正则表达式代码中的CompleteMetory,c#,regex,asp.net-mvc-4,C#,Regex,Asp.net Mvc 4,目标: 在regex的支持下,确保data1和所有到data31的数据都是正确的,data4和所有到data7的数据都是错误的 Regex regexp = new Regex(@"^[a-zA-Z]:\\.*$"); 在C#中 问题: 数据6和数据7应该是错误的,但它是正确的 我不知道怎么解决它 Regex regexp = new Regex(@"^[a-zA-Z]:\\.*$"); //Correct result string data1 = "C:\\33

目标:
在regex的支持下,确保data1和所有到data31的数据都是正确的,data4和所有到data7的数据都是错误的

 Regex regexp = new Regex(@"^[a-zA-Z]:\\.*$");
在C#中

问题:
数据6和数据7应该是错误的,但它是正确的

我不知道怎么解决它

    Regex regexp = new Regex(@"^[a-zA-Z]:\\.*$");

    //Correct result
    string data1 = "C:\\33\\dd\\Desktop\\151222055438.txt";
    string data2 = "c:\\ff\\ded\\Desktop\\151222055438.txt";
    string data3 = "Z:\\ss\\gg\\Desktop\\151222055438.txt";
    string data31 = "d:\\da\\ds\\Df\\ff.txt";

    //Error result
    string data4 = "3:\\rr\\555\\Desktop\\151222055438.txt";
    string data5 = "d\\33\\4\\Desktop\\151222055438.txt";
    string data6 = "s:\\\\rr\\d\\Desktop\\151222055438.txt";
    string data7 = "s:\\\\\\f\\f\\Desktop\\151222055438.txt";


    if (regexp.Match(data1).Success)
    {
        int correct = 23;
    }

    if (regexp.Match(data2).Success)
    {
        int correct = 23;
    }

    if (regexp.Match(data3).Success)
    {
        int correct = 23;
    }

    if (regexp.Match(data31).Success)
    {
        int correct = 23;
    }



    if (regexp.Match(data4).Success)
    {
        int error = 23;
    }

    if (regexp.Match(data5).Success)
    {
        int error = 23;
    }

    if (regexp.Match(data6).Success)
    {
        int error = 23;
    }

    if (regexp.Match(data7).Success)
    {
        int error = 23;
    }

    int sds = 23;

我对您的表达式做了一点小小的修改,使其变成如下:
^[a-zA-Z]:(\\{2}[a-zA-Z0-9.]+)+$
(示例可用)

在您的例子中,您似乎在显式地查找
\
字符对,而
\{2}
就是这样做的。此外,在
\
对之间,您似乎只接受字母和数字。最后,您似乎还在寻找句点字符。

试试这个

Regex regexp = new Regex(@"^[a-zA-Z]:(\\{2}[a-zA-Z\d]+)+(\\{2}[\d]+)*.txt$");
如果您的文件有
“.txt”
扩展名,并且名称中只有数字,那么这可能会更好


两个斜杠的原因是表示反斜杠。因为它将考虑单反斜杠作为转义字符。 这一问题在一次试验中得到了解决。您只需将其调整为使用单反斜杠而不是双反斜杠:

var regexp = new Regex(@"^[a-zA-Z]:(\\[^\\]+)+$");

\\
匹配一个反斜杠(因为
\
在逐字字符串文字中不特殊,但在正则表达式中特殊)。然后,
[^\\]+
匹配除反斜杠以外的一个或多个字符;这是目录或文件名。

看起来您正在验证文件名,为什么不改为使用?