简体   繁体   English

用javascript中任何格式的日期的正则表达式?

[英]regular expression for date in any format in javascript?

regular expression for date in any format in javascript 日期的正则表达式,可使用javascript中的任何格式

The format includes: dd/mm/yyyy or mm/dd/yyyy or yyyy/dd/mm or dd-yy-mmmm or ddmmyyyy like so on..... 格式包括:dd / mm / yyyy或mm / dd / yyyy或yyyy / dd / mm或dd-yy-mmmm或ddmmyyyy等等。

can any one help please?? 有谁可以帮忙吗?

There is no "perfect" parse but I would suggest using something like datejs for handling dates in javascript. 没有“完美的”解析,但我建议使用类似datejs的方法来处理javascript中的日期。 It can handle a number of parsing routines with a wide variety of format support. 它可以处理多种格式支持的解析例程。

Reg Ex for dates with leap year consideration. Reg Ex用于考虑leap年的日期。 Wrote it for as3, but since js and as3 are both derivative of ECMAScript, it should work fine in JS too. 为as3编写了它,但是由于js和as3都是ECMAScript的派生产品,因此在JS中也应能正常工作。

Change # in the reg ex with your desired date separator. 使用所需的日期分隔符更改正则表达式中的#。 For a global separator replace # with (/|-|.) 对于全局分隔符,将#替换为(/ |-|。)。

For DD-MM-YYYY format 对于DD-MM-YYYY格式

^(?:31#(?:(?:0[13578])|(?:1[02]))#)|(?:(?:29|30)#(?:(?:0[1,3-9])|(?:1[0-2]))#)(?:(?:1[6-9]|[2-9]\d)\d{2})$|^(?:29#02#(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1\d)|(?:2[0-8]))#(?:(?:0[1-9])|(?:1[0-2]))#(?:(?:1[6-9]|[2-9]\d)\d{2})$

For MM-DD-YYYY format 对于MM-DD-YYYY格式

^(?:(?:(?:0?[13578]|1[02])#31)\1|(?:(?:0?[1,3-9]|1[0-2])#(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2#29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))#(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$

Tests with performance. 性能测试。

29-02-2000 ---> true
millis 2
29-02-2006 ---> false
millis 0
29-02-2001 ---> false
millis 0
30-02-2000 ---> false
millis 0
31-11-2000 ---> false
millis 0
29-13-2000 ---> false
millis 0
31-11-2000 ---> false
millis 0
31-07-2000 ---> true
millis 0
31-08-2000 ---> true
millis 1
31-12-2000 ---> true
millis 0
30-11-2011 ---> true
millis 0
17-07-2011 ---> true
millis 0
04-10-1987 ---> true
millis 0
01-01-1900 ---> true
millis 0
24-05-88 ---> false
millis 0
24-05-88 ---> false
millis 0
29-12-2011 ---> true
millis 0
31-12-2000 ---> true
millis 0
1-1-2010 ---> false
millis 0
1-1-99 ---> false
millis 0
1-01-99 ---> false
millis 0
01-1-99 ---> false
millis 0

For various formats, modify date seperators reg ex and ordering. 对于各种格式,请修改日期分隔符正则表达式和顺序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM