我有一个文本框,接受printing.following的输入是可接受的模式
1,4-5,6,7-9或1,2,3,4-5或1,2-9,10-15,16。
我尝试使用以下代码,但某些情况下失败
List<bool> result = new List<bool>();
string[] array = inputstring.Split(',');
int i = 0;
foreach (string k in array)
{
result.Add(Regex.IsMatch(k, @"^\d+|(\d+-\d+)$"));
i++;
}
foreach (bool b in result)
{
if (b.Equals(false))
{
MessageBox.Show("Please enter valid entry for print pages");
return;
}
} 提前感谢
发布于 2014-12-09 20:49:24
看起来你想要这样的东西
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)+$+将前一个令牌重复一次或多次。
或
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$*将前一个令牌重复0次或多次。
发布于 2014-12-09 20:50:14
发布于 2014-12-09 21:03:52
这不是regex能够很好地解决的问题。
你会在其他答案中看到一些部分的解决方案,但除了难以维护外,它们不会处理基本的事情,比如验证页面范围是否有意义。
使用自定义处理程序会更容易、更灵活:
https://stackoverflow.com/questions/27379275
复制相似问题