首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >1,4-5,6,7-9或1,2,3,4-5或1,2-9,10-15,16的C#正则表达式

1,4-5,6,7-9或1,2,3,4-5或1,2-9,10-15,16的C#正则表达式
EN

Stack Overflow用户
提问于 2014-12-09 20:45:00
回答 5查看 117关注 0票数 0

我有一个文本框,接受printing.following的输入是可接受的模式

1,4-5,6,7-9或1,2,3,4-5或1,2-9,10-15,16。

我尝试使用以下代码,但某些情况下失败

代码语言:javascript
运行
复制
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;
    }
} 

提前感谢

EN

回答 5

Stack Overflow用户

发布于 2014-12-09 20:49:24

看起来你想要这样的东西

代码语言:javascript
运行
复制
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)+$

+将前一个令牌重复一次或多次。

代码语言:javascript
运行
复制
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$

*将前一个令牌重复0次或多次。

DEMO

票数 1
EN

Stack Overflow用户

发布于 2014-12-09 20:50:14

代码语言:javascript
运行
复制
^\d+(?:-\d+)?(?:,\d+(?:-\d+)?)*$

试试this.See演示。

https://regex101.com/r/iY3eK8/11

票数 1
EN

Stack Overflow用户

发布于 2014-12-09 21:03:52

这不是regex能够很好地解决的问题。

你会在其他答案中看到一些部分的解决方案,但除了难以维护外,它们不会处理基本的事情,比如验证页面范围是否有意义。

使用自定义处理程序会更容易、更灵活:

  • 拆分范围
  • 将它们作为单个数字或范围删除pairs
  • Optionally,验证范围是否有效(a < b)和non-overlapping
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27379275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档