【问题标题】:javascript - regular expression to validate date in mm/dd/yyyy format [duplicate]javascript - 以 mm/dd/yyyy 格式验证日期的正则表达式 [重复]
【发布时间】:2013-07-04 09:25:27
【问题描述】:

我不擅长正则表达式。我得到了验证 dd/mm/yyyy 格式的代码,它也验证了闰年,我尝试修改以使其适用于 mm/dd/yyyy,但它们都失败了。

有人可以更改它以验证 mm/dd/yyyy 格式吗?

正则表达式:

^(((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格式的答案

正则表达式:

/^(((0[13578]|1[02])/(0[1-9]|[12]\d|3[01])/((19|[2-9]\d )\d{2}))|((0[13456789]|1[012])/(0[1-9]|[12]\d|30)/((19|[2-9]\d )\d{2}))|(02/(0[1-9]|1\d|2[0-8])/((19|[2-9]\d)\d{2}) )|(02/29/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[ 2468][048]|[3579][26])00))))$/g

【问题讨论】:

  • 最好尝试从输入字符串构造 Date 对象,如果它有效(非空),则日期有效。因为像闰年和一个月的天数这样的问题很容易解决
  • 在这里使用正则表达式是个坏主意。人们无法在最好的情况下正确计算闰年 - 尝试在正则表达式中进行计算会很糟糕。
  • 看看这个答案给你一些替代的想法:stackoverflow.com/a/16464768/592253
  • 您不应该询问是否有人可以为您更改代码! momentjs.com
  • 自己解析字符串并输入组件,见String.splitDate

标签: javascript regex validation date date-conversion


【解决方案1】:

试试

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);
}

但最好使用正则表达式,使用日期字符串中的Date object,然后对其进行验证。

【讨论】:

  • 感谢您的回答,但我也需要验证闰年日期
  • 它没有那样做..??你检查过吗..?
  • 闰年不会有不同的格式吗??
  • 我认为@Connor 可能需要稍微改变一下。
  • 在 jsfiddle 中:jsfiddle.net/LSsMc
猜你喜欢
  • 2014-03-30
  • 2012-01-03
  • 1970-01-01
  • 2020-04-09
  • 2023-04-07
  • 2022-01-04
  • 2013-02-18
  • 2017-07-10
相关资源
最近更新 更多