求一正则表达式,数字及数字区间

51Crack 2013-04-12 02:23:11
刚才看到一贴,但.net 4.0中一直失败
可以输入单个数字,也可输入n-m范围,多个用逗号分开

如:
100
1-100
100,101-200
100,101-200,300
1-100,200,300-400

下面的格式应匹配失败:
-100
,1-100
100,
100,,200
100,200,,
...全文
739 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
51Crack 2013-04-12
  • 打赏
  • 举报
回复
晕,刚发现 100-200-300,400 不应该通过却通过验证了
51Crack 2013-04-12
  • 打赏
  • 举报
回复
引用 9 楼 gomoku 的回复:
把前面两个星号,换成问号。
^(\d+(\-\d+)?)+(,(\d+(\-\d+)?))*$ 可以了,非常感谢
gomoku 2013-04-12
  • 打赏
  • 举报
回复
引用 8 楼 51Crack 的回复:
引用 6 楼 gomoku 的回复:更正: ^(\d+(\-\d+)*)+(,(\d+(\-\d+)*))*$ 只差1种 2,1-200-300
把前面两个星号,换成问号。
51Crack 2013-04-12
  • 打赏
  • 举报
回复
引用 6 楼 gomoku 的回复:
更正: ^(\d+(\-\d+)*)+(,(\d+(\-\d+)*))*$
只差1种 2,1-200-300
51Crack 2013-04-12
  • 打赏
  • 举报
回复
还有几种情况也要失败 2,1-200-300 2,,100 2--100
gomoku 2013-04-12
  • 打赏
  • 举报
回复
更正: ^(\d+(\-\d+)*)+(,(\d+(\-\d+)*))*$
51Crack 2013-04-12
  • 打赏
  • 举报
回复
引用 4 楼 gomoku 的回复:
^(\d+(\-\d+)*)+(,(\d+(\-\d+)*)*)$
1-100,200,300失败
gomoku 2013-04-12
  • 打赏
  • 举报
回复
^(\d+(\-\d+)*)+(;(\d+(\-\d+)*)*)$
51Crack 2013-04-12
  • 打赏
  • 举报
回复
引用 2 楼 bdmh 的回复:
^[\d]+[-]{0,1}[\d]+$ 试试,
不行,1-100,200 失败
bdmh 2013-04-12
  • 打赏
  • 举报
回复
^[\d]+[-]{0,1}[\d]+$ 试试,
shawn_yang 2013-04-12
  • 打赏
  • 举报
回复
这个正则恐怕不一定能实现,需要配合字串处理 用 if + 正则

110,500

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧