我需要用正则表达式验证格式为dd/mm/yyyy的日期字符串。
这个正则表达式验证dd/mm/yyyy,但不验证像31/02/4500这样的无效日期:
^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$
什么是有效的正则表达式来验证支持闰年的dd/mm/yyyy格式?
我需要用正则表达式验证格式为dd/mm/yyyy的日期字符串。
这个正则表达式验证dd/mm/yyyy,但不验证像31/02/4500这样的无效日期:
^(0?[1-9]|[12][0-9]|3[01])[\/\-](0?[1-9]|1[012])[\/\-]\d{4}$
什么是有效的正则表达式来验证支持闰年的dd/mm/yyyy格式?
当前回答
在这里找到这个reg ex
^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$
这将正确地验证mm/dd/yyyy格式和有效日期(但不是m/d/yyyy)。
一些测试
其他回答
我知道这个问题已经有很长时间没有回答了,但也许这可以帮助到其他人。问题是,我也想检查年份,让一些过去的年份也匹配。这个正则表达式匹配日期格式为“DD-MM-YYYY”。所以这个函数将返回一个正则表达式:
const check_year = "01-01-2021" console.log(get_regex()) console.log(check_year.match(get_regex())) function get_regex(){ let actual_year = `${new Date().getFullYear()}` let regex = new RegExp() let split_year = actual_year.split("") let year_regex = `${split_year[0]}[0-${split_year[1]}][0-${split_year[2]}][0-${split_year[3]}]$` let day_month_regex = "^([1-2][0-9]|3[0-1]|0?[1-9])[-]([1][0-2]|0?[1-9])[-]" regex.compile(day_month_regex+year_regex, "g") return regex }
你粘贴的正则表达式没有正确地验证闰年,但在同一篇文章中有一个正则表达式。 我将其修改为dd/mm/yyyy, dd-mm-yyyy或dd.mm.yyyy。
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
我在Arun提供的答案和这里的链接中测试了一下,它似乎有效。
编辑2019年2月14日:我已经删除了正则表达式中允许29-0,-11等日期的逗号
对于日期MM/DD/YYYY,可以使用
^((((0[13578])|([13578])|(1[02]))[\/](([1-9])|([0-2][0-9])|(3[01])))|(((0[469])|([469])|(11))[\/](([1-9])|([0-2][0-9])|(30)))|((2|02)[\/](([1-9])|([0-2][0-9]))))[\/]\d{4}$|^\d{4}$
它可以验证正确的日期和飞蛾。
请记住,您可以检查正则表达式at
regex101
我推荐这个:)
玩得开心!
请遵循以下表达方式
Regex regex = new Regex(@"(((0|1)[0-9]|2[0-9]|3[0-1])\/(0[1-9]|1[0-2])\/((19|20)\d\d))$");
"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.]((19|20)\\d\\d)$"
是否会在1900-2099年之间生效