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



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

我正试图找到一个正则表达式字符串,它可以识别mmddyyy格式的出生日期。不过,据我所知,如果单个数字集紧挨着,regex不知道它们的开始/结束位置。

有没有一种简单的方法可以让regex找到它(不需要分隔符/空格)?

像这样的东西怎么样

^([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})$

如果日和月总是用完2位数字(在零之前),那么这当然不是问题:(dd)(dd)(dd)

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

如果不是。。。不,它们不是银弹。

最新更新