正则表达式 - 日期 (mm/dd/yyyy) 格式 (JavaScript)

Rin*_*ase 1 javascript regex

正则表达式的格式为mm/dd/yyyy。

当前的正则表达式目前有一个小问题,我无法确定。我可以使用有效的月份、闰年和年份范围验证 mm/dd/yyyy。尽管当写入的年份为'2016asdf' 时,它仍然接受该值。

它应该遵循的规则是:

  • 只允许有效日期
  • 2月29日如果是闰年可以算
  • 年份值范围为 1900 - 2099

有效值:

12/31/2016

1900 年 1 月 15 日

02/29/2016(因为2016年是闰年)

无效值:

1/01/1900(因为格式是“mm”而不是“m”)

01/32/1900(因为没有这样的日期)

13/22/1900(因为没有那个月)

03/01/2100(超出年份限制)

02/29/2017(因为2017年不是闰年)

Ami*_*eri 6

你弄错了。这不应该通过 Regex 来完成,事实上,它并不打算这样做。为此,您需要执行以下步骤:

1- 通过正则表达式检查模式

2- 验证日期。

您正在寻找的模式是:

var pattern = /(0\d{1}|1[0-2])\/([0-2]\d{1}|3[0-1])\/(19|20)\d{2}/
Run Code Online (Sandbox Code Playgroud)

看看这个看看模式:http : //regexr.com/3fe3s

最后,如果要检查日期是否为有效日期(在检查模式后)。

这是整个方法:

    function isValidDate(dtValue2) {
    // your desired pattern
    var pattern = /(0\d{1}|1[0-2])\/([0-2]\d{1}|3[0-1])\/(19|20)(\d{2})/
    var m = dtValue2.match(pattern);
    if (!m)
        return false;
    var d = new Date(dtValue2);
    // Now let's ensure that the date is not out of index


    if (d.getMonth()+1 == parseInt(m[1], 10) && d.getDate() ==parseInt(m[2], 10)) {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)