用于validation日期时间格式的正则表达式(MM / DD / YYYY)

我正在尝试validation日期时间格式MM / DD / YYYY。 这是我正在尝试的代码请帮助。

function ValidateDate(testdate) { var Status var reg = /^(((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))))$/g; if (!reg.test(testdate)) { Status = false; } return Status; } 

尝试使用像http://jsregex.com/ (有很多)或更好的工具,unit testing你的正则表达式。

对于天真的validation:

 function validateDate(testdate) { var date_regex = /^\d{2}\/\d{2}\/\d{4}$/ ; return date_regex.test(testdate); } 

在你的情况下,要validation(MM / DD / YYYY),年份在1900年到2099年之间,我会这样写:

 function validateDate(testdate) { var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/ ; return date_regex.test(testdate); } 

标记的答案是完美的,但对于一种情况,dd和mm实际上是单个数字。 在这种情况下,以下正则表达式是完美的:

  function validateDate(testdate) { var date_regex = /^(0?[1-9]|1[0-2])\/(0?[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/ ; return date_regex.test(testdate); } 

基于此

DD-MM-YY

我修改了原文:

 ^(?:(?:(?:0?[13578]|1[02]|(?:Jan|Mar|May|Jul|Aug|Oct|Dec))(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2]|(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec))(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:(?:0?2|(?:Feb))(\/|-|\.)(?:29)\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9]|(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep))|(?:1[0-2]|(?:Oct|Nov|Dec)))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$ 

在这里测试正则表达式

 var pattern = new RegExp((0|1)[0-9]\/[0-3][0-9]\/(19|20)[0-9]{2}); if(!testdate.match(pattern)) return false; else return true; 

对于Web开发,您可以使用ng-pattern:

   

你可以查看这个链接,我希望这可能对我有很大的帮助。

如果您正在使用Java代码中的上述链接中给出的正则表达式,请使用以下正则表达式

"^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d$"

正如我在你的例子中注意到你使用的是js函数,然后使用正则表达式

"^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d$"

这将匹配1900-01-01和2099-12-31之间的mm / dd / yyyy格式的日期,可选择四个分隔符。 而不是忘了

return regex.test(testdate);


在这种情况下,要validation日期(DD-MM-YYYY)或(DD / MM / YYYY),年份介于1900和2099之间,请使用月份和天数validation

 if (!Regex.Match(txtDob.Text, @"^(0[1-9]|1[0-9]|2[0-9]|3[0,1])([/+-])(0[1-9]|1[0-2])([/+-])(19|20)[0-9]{2}$").Success) { MessageBox.Show("InValid Date of Birth"); txtDob.Focus(); } 

这很长,但很棒:

 new RegExp(/(?=\d)^(?:(?!(?:10\D(?:0?[5-9]|1[0-4])\D(?:1582))|(?:0?9\D(?:0?[3-9]|1[0-3])\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\/31)(?!-31)(?!\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\d\d)(?:[02468][048]|[13579][26])(?!\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\x20BC))))))|(?:0?2(?=.(?:(?:\d\D)|(?:[01]\d)|(?:2[0-8])))))([-.\/])(0?[1-9]|[12]\d|3[01])\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\d)\x20BC)|(?:\d{4}(?!\x20BC)))\d{4}(?:\x20BC)?)(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/);