【问题标题】:Check for specific formatting (time and date)检查特定格式(时间和日期)
【发布时间】:2011-03-01 00:34:50
【问题描述】:

我需要用 javascript 测试以下格式(所以我有一个字符串,我必须检查它是否有效)

XX:XX

值必须是两个整数(有两个数字),用冒号分隔,第一个必须是0-23,第二个必须是0- 59(时间到了)。

第二次测试大约是日期

DD.MM.YYYY

其中 DD 是日、MM 月和 YYYY 年的 2 位数字表示 - 用点分隔。我还可以检查日期是否有效?例如,用户不能输入 45.02.9999。

【问题讨论】:

    标签: javascript date time


    【解决方案1】:

    这可以通过相当简单的 RegEx 来完成。

    第一个测试 24 小时格式的时间是:

    /(0[1-9]|1[1-9]|2[1-3]):[0-5][1-9]/.test(yourTime);
    

    第二个测试日期是:

    /([0-2][0-9]|3[0-1])\.(0[1-9]|1[0-2])\.(19[0-9][0-9]|20[0-1][0-9])/.test(yourDate);
    

    这将允许日期不超过 2019 年 12 月 31 日。知道每个月有多少天还不够聪明(即 31.02.1999 不是有效日期),但对于大多数目的来说应该是足够好的初始验证。

    【讨论】:

      【解决方案2】:

      在这篇文章中,您拥有所需的所有正则表达式。

      http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5

      这是为了时间:

      ^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$
      

      这是日期:

      ^(0[1-9]|[12][0-9]|3[01]).([1][0-12]|[0][1-9]).(19|20)\d\d$
      

      你可以在http://www.rubular.com/试试这个正则表达式

      【讨论】:

      • 正则表达式无法检查有效性。正则表达式无法捕获无效日期,例如 29.02.2011
      • @Stephen P 您还没有听说过 Gregorian Compatible Regular Expressions? :P
      【解决方案3】:

      使用两遍方法。首先使用正则表达式检查字符串的一般结构,以确保它在正确的位置具有正确的分隔符和数字。在第二遍中,您可以使用indexOf() 查找分隔符并使用substring() 提取每个位置的数字。然后使用n = str * 1 转换为数字,并在第一种情况下检查n >=0 && n <=23 的范围。

      两遍方法意味着您可以获得更简单的正则表达式和更易读的代码。

      【讨论】:

        【解决方案4】:

        使用正则表达式将字符串拆分为其组件,然后使用结果填充日期对象以检查有效性。

        【讨论】:

          猜你喜欢
          • 2012-05-27
          • 2014-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-04
          • 1970-01-01
          • 2018-12-08
          • 1970-01-01
          相关资源
          最近更新 更多