【发布时间】:2018-12-14 16:48:56
【问题描述】:
我有一个日期字符串,例如Thursday, December 13, 2018,即DAY, MONTH dd, yyyy,我需要使用正则表达式对其进行验证。
正则表达式不应验证错误的日期或月份。例如,Muesday, December 13, 2018 和Thursday, December 32, 2018 应标记为无效。
到目前为止,我能做的是为“、”、“dd”和“yyyy”编写表达式。我不明白我将如何自定义正则表达式,使其只接受正确的日期和月份的名称。
我的尝试:
^([something would come over here for day name]day)([\,]|[\, ])(something would come over here for month name)(0?[1-9]|[12][0-9]|3[01])([\,]|[\, ])([12][0-9]\d\d)$
谢谢。
编辑:我只包括了从 1000 年到 2999 年的年份。验证闰年并不重要。
【问题讨论】:
-
我会尝试将其转换为
datetime,如果成功,您就赢了。正则表达式更难阅读、理解、扩展、调试。类似于:stackoverflow.com/questions/466345/…跨度> -
您应该明确地将字符串解析为日期并检查它是否有效。有很多图书馆就是为此而生的(例如
dateFns、moment.js等)。否则,您将如何使用正则表达式验证复杂的用例,例如 31. June 或错误的工作日名称?