我正在尝试编写一个正则表达式,该表达式验证文本框只有长度为5或9的数字。我找到了以下正则表达式来完成此操作
^\d{1,5}([,]\d{5})*$
但它无法正确修复我的要求,任何人都可以帮我修改或编写支持以下模式的新正则表达式。
答案 0 :(得分:1)
请尝试以下方法:
var lines = new []
{
"09103,09101,",
"09103,09101",
"12345,1234567",
"12345,123456789",
"12345"
};
var re = new Regex(@"^\d{1,5}(,(\d{5}|\d{9}))?,?$");
foreach (var line in lines)
{
Console.WriteLine("{0} = {1}", line, re.IsMatch(line) ? "Valid" : "Invalid");
}
<强>输出强>
09103,09101, = Valid
09103,09101 = Valid
12345,1234567 = Invalid
12345,123456789 = Valid
12345 = Valid
您可以在此处运行:C# Fiddle
答案 1 :(得分:0)
试试这个,确切的测试用例。
^\d{5},?$|^\d{5},\d{5},?$|^\d{5},\d{9},?$
它使用|
字符来分隔&#39;替代&#39;模式,读作&#34;或&#34;。即。
^\d{5}$ OR ^\d{5},\d{5}$ OR ^\d{5},\d{9}$
答案 2 :(得分:0)