在Javascript中正则表达式以测试各种日期

时间:2014-06-11 15:06:24

标签: javascript regex

我需要javascript中的正则表达式,可以使用以下格式测试日期:

  • yyyy-MM-dd(例如:2014-12-31)
  • dd.MM.yyyy(例如:31.12.2014)
  • dd.MM.yy(例如:31.12.14)
  • ddMMyyyy(例如:12312014)
  • ddMMyy(例如:123114)
  • dd.M.yy(例如:12.6.14)
  • dd.M.yyyy(例如:12.6.2014)

抱歉,但我对正则表达式非常糟糕。对于专业人士而言,这可能是轻而易举的事。万分感谢。

2 个答案:

答案 0 :(得分:1)

您的第一个模式与其他模式有太大不同,无法进行有意义的合并。所以:\d{4}-\d\d-\d\d

对于其他人,您允许使用可选的.作为分隔符,以及两位或四位数年份。所以你有:\d\d(\.?)\d\d?\1\d\d(?:\d\d)?

上面的\1基本上是重复(\.?)的结果 - 即。如果之前有一个点,则为一个点,否则为空。

结果:

/^(?:\d{4}-\d\d-\d\d|\d\d(\.?)\d\d?\1\d\d(?:\d\d)?)$/

答案 1 :(得分:1)

你看过here了吗?你不想使用正则表达式这样的东西,因为前面提到的99.33.8888不是约会对象。

这个聪明的功能可以解决您的问题:

var isDate_ = function(input) {
    var status = false;
    if (!input || input.length <= 0) {
      status = false;
    } else {
      var result = new Date(input);
      if (result == 'Invalid Date') {
        status = false;
      } else {
        status = true;
      }
    }
    return status;
  }

编辑:我忘了你需要找一些要验证的东西。您可以像这样运行一个简单的正则表达式:[0-9-/\.]{6,10},它匹配您的所有示例