Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#regex帮助-验证输入_C#_Regex - Fatal编程技术网

C#regex帮助-验证输入

C#regex帮助-验证输入,c#,regex,C#,Regex,我需要验证用户是否以以下格式输入了文本: ####-#####-####-### ####-#####-####-### 我可以使用Regex.Match执行此操作吗?我可以执行以下操作: private static readonly Regex _validator = new Regex(@"^\d{4}-\d{5}-\d{4}-\d{3}$", RegexOptions.Compiled); private static bool ValidateInput(string in

我需要验证用户是否以以下格式输入了文本:

####-#####-####-### ####-#####-####-###
我可以使用Regex.Match执行此操作吗?

我可以执行以下操作:

private static readonly Regex _validator = 
    new Regex(@"^\d{4}-\d{5}-\d{4}-\d{3}$", RegexOptions.Compiled);
private static bool ValidateInput(string input)
{
    input = (input ?? string.Empty);
    if (input.Length != 19)
    {
        return false;
    }
    return _validator.IsMatch(input);
}

这不只是数字吗?诚然,这个问题并没有确切地说明“text”是什么。@Liviu-我通常将#解释为一个数字占位符。为什么要麻烦地检查长度并获得多个返回,预编译的regex操作是否太昂贵以至于不值得去做?我会让它在正则表达式中失败,使方法更简单。不过,我确实认为你使用的是D而不是[09] @达斯塔尔-我不认为检查长度会带来很多麻烦。这是一种验证输入的简单方法。在一个高吞吐量的过程中,它也可以改变性能。(我承认不多。)对于任何类型的破折号标点,那些文字
-
字符,代码点45连字符减号,应该更好地写成
\p{Pd}
?如果您希望它们都是相同的类型,您可以编写
^\d{4}(\p{Pd})\d{5}\1\d{4}\p{Pd}\1\d{3}$