2011-03-01 67 views
0

我需要的javascript以下格式(所以我有一个字符串,我必须检查它是否有效与否)检查特定的格式(时间和日期)

XX:XX 

值必须测试两个整数(与两个数字)相隔冒号,第一个必须是0-23和第二个0-59(这是关于时间)。

第二个测试是关于日期

DD.MM.YYYY 

其中DD是当天的2位数表示,MM月,YYYY年 - 用点分隔。我还可以检查是否是日期有效?因此,用户无法键入45.02.9999例如。

回答

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不是有效日期)是不够聪明的,但是对于大多数目的来说应该足够好以进行初始验证。

1

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

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/

+0

正则表达式无法检查有效性。正则表达式无法捕获无效日期,例如'29.02.2011' – 2011-03-01 00:46:13

+1

@Stephen P您还没有听说过公历兼容正则表达式? :P – alex 2011-03-01 00:50:23

0

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

两种方法意味着你可以有一个更简单的正则表达式和更多的可读代码。

0

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