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}$
。