日期正则表达式问题:

neary 2003-10-15 03:54:03
//日期格式yyyy/mm/dd
/^(\d{4})/(0\d{1}|1[0-2])/(0\d{1}|[12]\d{1}|3[01])$/;

上面的表达式不能校验“2003/00/00”为错误日期
请帮忙修改一下正则表达式,谢谢
...全文
121 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xixigongzhu 2003-10-15
  • 打赏
  • 举报
回复
将这些数据结合:
润年正则表达式:
((2000年之前的润年正则表达式)|(2000年之后的润年正则表达式))/((大月份|小月份|润年2月份))

非润年正则表达式:
((2000年之前的非润年正则表达式)|(2000年之后的非润年正则表达式))/((大月份|小月份|非润年2月份))

然后正则表达式是:
润年正则表达式|非润年正则表达式
xixigongzhu 2003-10-15
  • 打赏
  • 举报
回复
2月份的有点误差,润年的:
([0][2])/(([1-2][0-9])|([0][1-9]))
非润年:
([0][2])/(([1-2][0-8])|([0][1-9])|([1][9]))

2000年之前的润年正则表达式:
[1][9](([7|9][2|6])|([8][0|4|8]))
2000年之前的非润年正则表达式:
[1][9](([7|9][0|1|3|4|5|7|8|9])|([8][1|2|3|5|6|7|9]))

2000年之后的润年正则表达式:
[2][0](([0|2|4|6][0|4|8])|([1|3|5][2|6]))
2000年之后的非润年正则表达式:
[2][0](([0|2|4|6][1|2|3|5|6|7|9])|([1|3|5][0|1|3|4|5|7|8|9]))
xixigongzhu 2003-10-15
  • 打赏
  • 举报
回复
如果是润年,月和日的正则表达式是:
大月份:
(([0][1|3|5|7|8])|([1][0|2]))/(([1-2][0-9])|([0][1-9])|([3][0|1]))
小月份:
(([0][4|6|9])|([1][1]))/(([1-2][0-9])|([0][1-9])|([3][0]))
2月份:
([2])/(([1-2][0-9])|([0][1-9))

如果不是润年,大月份和小月份与润年一样,2月份:
([2])/(([1-2][0-8])|([0][1-9)|([1][9]))
neary 2003-10-15
  • 打赏
  • 举报
回复
to xixigongzhu(夕夕公主) :
1970---2069
xixigongzhu 2003-10-15
  • 打赏
  • 举报
回复
请问年份的范围是多少?
因为必须先知道这个范围,这个问题才好做。
xz_king 2003-10-15
  • 打赏
  • 举报
回复
/^(\d{4})/((0[1-9])|(1[0-2]))/((0[1-9])|([1-2][0-9])|(3[01]))$/
herofyf 2003-10-15
  • 打赏
  • 举报
回复
^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$

110,502

社区成员

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

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

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