正则表达式无法正常工作(无法将字符串转换为int(Regex.IsMatch)

时间:2013-01-25 12:09:46

标签: c# .net regex

对此有一个非常简单的答案,我知道有。但我无法理解它。 它是一个控制台应用程序,你输入一个单词“password”,它会告诉我它是否与我的正则表达式匹配,因为你可以正确地收集。

基本上我想知道为什么这不起作用:

static void Main(string[] args)
{
    Regex regularExpression = new Regex("/^[a-z0-9_-]{3,16}$/");

    Console.Write("Enter password: ");
    string password = Console.ReadLine();

    if (Regex.IsMatch(password, regularExpression))
        Console.WriteLine("Input matches regular expression");
    else
        Console.WriteLine("Input DOES NOT match regular expression");

    Console.ReadKey(); 
}

我确定这与Regex.IsMatch方法无法将字符串转换为int有关。

2 个答案:

答案 0 :(得分:2)

因为您正在使用静态方法isMatch并且正在提供正则表达式对象,它希望将正则表达式作为字符串,请参阅Regex class

此外,您不需要.net中的正则表达式分隔符。

使用此:

static void Main(string[] args) {
    Regex regularExpression = new Regex(@"^[a-z0-9_-]{3,16}$");

    Console.Write("Enter password: ");
    string password = Console.ReadLine();

    if (regularExpression.IsMatch(password))
        Console.WriteLine("Input matches regular expression");
    else
        Console.WriteLine("Input DOES NOT match regular expression");
    Console.ReadKey(); 
}

答案 1 :(得分:0)

Regex regularExpression = new Regex("/^[a-z0-9_-]{3,16}$/");

/是符号,将其替换为字符串empty => @"^[a-z0-9_-]{3,16}$"