javascript - Javascript 中的正则表达式用于测试各种日期

标签 javascript regex

我需要 JavaScript 中的正则表达式来测试以下格式的日期:

  • yyyy-MM-dd(示例:2014-12-31)
  • dd.MM.yyyy(示例:2014 年 12 月 31 日)
  • dd.MM.yy(示例:2014 年 12 月 31 日)
  • ddMMyyyy(示例:12312014)
  • ddMMyy(示例:123114)
  • dd.M.yy(示例:2014 年 6 月 12 日)
  • dd.M.yyyy(示例:2014 年 6 月 12 日)

抱歉,但我对正则表达式真的很糟糕。这对于专业人士来说可能是轻而易举的事情。一百万谢谢。

最佳答案

您的第一个模式与其他模式差异太大,无法进行有意义的合并。所以:\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)?)$/

关于javascript - Javascript 中的正则表达式用于测试各种日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24166399/

相关文章:

javascript - 正则表达式仅在出现 4 次时查找字符

javascript - imacros 提取并删除不需要的文本

javascript - 垂直标签与内容高度相同

javascript - 使用 JQuery 的子页面中的图像预览不起作用?

javascript - xmlhttp 未定义。 JavaScript Ajax

javascript - 在javascript中使用正则表达式查找字符串中最后一次出现的逗号

Javascript .replace() 多次调用,一些带有变量,一些带有纯文本

javascript - 使用 RegEx 和 w/o Eval() 递归查找数字的数字之和

javascript - 如果您尝试编辑,光标会跳到字段末尾

javascript - famo.us 中两个可拖动表面之间的 Spring