【问题标题】:JavaScript Date Validation RegEx OR JS?JavaScript 日期验证 RegEx 还是 JS?
【发布时间】:2012-07-23 11:07:19
【问题描述】:

我正在使用设备内置的日期选择器,它以 YYYY/MM/DD 格式返回日期 并以 HH:MM 24 小时格式返回时间。

返回的整体字符串为 YYYY/MM/DDT/HH/MM T 为分隔符。

验证它以使其与格式 YYYY/MM/DD/T/HH/MM 匹配的最佳方法是什么 正则表达式? JavaScript 是否对构建的日期/时间进行了验证,即使我必须在 T 处拆分,所以我将日期和时间放在单独的变量中?

什么是最好的方法/算法来做到这一点以及性能明智?

如果我将我的变量拆分为数组,例如...

["YYYY/MM/DD","HH:MM"]

是否有最能验证这一点的正则表达式或 js 函数?性能是关键。

谢谢

【问题讨论】:

  • “性能(原文如此)是关键。” 为什么?
  • 将在非常低端的设备上进行 + 30/40 次
  • 很公平。你写了“返回的整体字符串是 YYYY/MM/DDT/HH/MM T 作为分隔符。” 但是从你后面说的来看,我猜它实际上是YYYY/MM/DDTHH:MM?
  • 验证应始终在服务器端完成。出于用户体验的目的,客户端验证是可选的。
  • 是的也将在服务器端完成,但由于应用程序是在黑莓中打包的,我们在这里这样做是为了它可以离线工作

标签: javascript regex validation date time


【解决方案1】:

我不会担心性能,大概你不会在一个紧密的循环中执行数十万次。

regex 是一个很好的方法,并且很容易编写;如果您创建一次正则表达式并重复使用它,它也应该表现良好。

假设您的格式示例是错字并且您的意思是 YYYY/MM/DDTHH:MM,现代 JavaScript 引擎也应该支持使用该字符串作为 new Date(...) 的参数,前提是您将 / 更改为 -(您可以通过String#replace 轻松完成。那是因为它符合定义为 ES5 一部分的pared-down ISO-8601 format。但较旧的引擎(例如 IE8 及更早版本)可能不支持它,您必须在您打算支持的浏览器上进行测试。但如果真的是YYYY/MM/DDT/HH/MM,请忽略这一段。

【讨论】:

    猜你喜欢
    • 2013-05-13
    • 2017-06-14
    • 2020-02-23
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    相关资源
    最近更新 更多