崩溃的边缘(这个正则表达式如何写?)

sizheng0320 2003-10-16 11:29:36
输入日期,可以一天一天地,也可以用减号表示范围,中间用逗号间隔。
如:
1,2,23,4-8,9,12

我的写法是
((\d{1,2},)*\d{1,2})|((\d{1,2},)*(\d{1,2}-\d{1,2},)*(\d{1,2}-\d{1,2})(,\d{1,2})*)

当输入单个数字时可以,可是一旦输入表示范围的就出错。

请指正。
...全文
45 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sizheng0320 2003-10-17
  • 打赏
  • 举报
回复
当然,至于数字范围,可以用老孩子给的办法。
sizheng0320 2003-10-17
  • 打赏
  • 举报
回复
说白了就是要求可以输入单个数字以及用减号连接的数字范围,任意组合,中间用逗号间隔。

已经搞定了:

((\d{1,2},)*(\d{1,2}\-\d{1,2},)*)+((\d{1,2}\-\d{1,2})|\d{1,2})

关键是减号也要转义,晕死。我还特意注意了这点,可是MSDN里面这么说:
除 . $ ^ { [ ( | ) * + ? \ 外,其他字符与自身匹配。

里面没有提到减号。:(
ttmmdd 2003-10-16
  • 打赏
  • 举报
回复
你这个不适合用正则表达式来表达了.太长了.
用FLEX的正则表达式来写的话
设定范围 可以把日期展开成败 ([1-2][0-9])|([1-9])|(3[0-1])

你的问题
((日期|(日期\-日期)) ,)*(日期|(日期\-日期))
因该是可以表达的 不过展开日期后就很长了
coolzj 2003-10-16
  • 打赏
  • 举报
回复
对啊,你能不能把你要求的日期格式给出来啊?
sizheng0320 2003-10-16
  • 打赏
  • 举报
回复
另外,如何设定范围?即日期不能大于31。
sizheng0320 2003-10-16
  • 打赏
  • 举报
回复
不适合写?那怎么办?

33,006

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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