RegEx用于在六个连续数字的字符串中查找DOB(mmddyy)

时间:2012-03-07 21:24:31

标签: regex

如果这是一个重复的问题,请提前抱歉。我没有看到它在其他地方列出。

我正在尝试找到一个正则表达式字符串,它将以 mmddyy 的格式识别出生日期。据我所知,正则表达式不知道个别数字集的开始/结束位置,如果它们彼此相邻。

是否有一种简单的方法可以让regex找到它(不需要分隔符/间距)?

2 个答案:

答案 0 :(得分:2)

如下:

^([0-9]{2})([0-9]{2})([0-9]{2})$

第一组是本月的两位数,下一组是当天的两位数,最后一组是年份。

如果你想变得更聪明,你可以确保第一组以0或1开头,而那一天应该从0,1,2或3开始。或许:

^([0-1][0-9])([0-3][\d])([\d]{2})$

如果您不想,也可能不需要使用RegEx。如今,大多数现代框架(Python,.NET,Java等)都有用于解析指定格式的日期的库和方法。这样做还有类型检查和构建本机Date对象的能力。

<强>更新

您可以使用OR来验证日期不会超过31:

^([0-1][0-9])([0-2][\d]|[3][0-1])([\d]{2})$

答案 1 :(得分:0)

如果日期和月份总是用完2位数(前面的零),那么当然这不是问题:(\d\d)(\d\d)(\d\d)

即使没有正则表达式,你也可以解决这个问题。

如果不是......不,他们不是一颗银弹。