如何用javascript中的正则判断日期

利用正则表达式
要求只允许向文本框中输入XXXX-XX-XX或XXXX/XX/XX两种格式的日期
year部分值允许是四位数字,且范围在1970-3000之间
month部分只允许是1或2位数字,且范围在1-12之间
day部分只允许是1或2位数字,且范围在1-31之间
任何一部分出现错误都要提示,全部正确则'通过'

最简单的正则 如 : \d{4}-\d{2}-\d{2} 但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题..... 对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。 UNIX时间戳的0按照ISO 8601规范为 :1970-01-01T00:00:00Z。 先考虑与年份无关的前三条规则,年份可统一写作 (?!0000)[0-9]{4} 下面仅考虑月和日的正则 1. 包括平年在内的所有年份的月份都包含1-28日 (0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8]) 2. 包括平年在内的所有年份除2月外都包含29和30日 (0[13-9]|1[0-2])-(29|30) 3. 包括平年在内的所有年份1、3、5、7、8、10、12月都包含31日 (0[13578]|1[02])-31) 合起来就是除闰年的2月29日外的其它所有日期 (?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31) 接下来考虑闰年的实现 1 : 四年一闰 ([0-9]{2}(0[48]|[2468][048]|[13579][26]) 2 : 百年不闰,四百年再闰 (0[48]|[2468][048]|[13579][26])00 3 : 合起来就是所有闰年的2月29日 ([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29) 四条规则都已实现,且互相间没有影响,合起来就是所有符合DateTime范围的日期的正则 ^((?!0000)[0-9]{4}-((0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-8])|(0[13-9]|1[0-2])-(29|30)|(0[13578]|1[02])-31)|([0-9]{2}(0[48]|[2468][048]|[13579][26])|(0[48]|[2468][048]|[13579][26])00)-02-29)$ 考虑到这个正则表达式仅仅是用作验证,所以捕获组没有意义,只会占用资源,影响匹配效率,所以可以使用非捕获组来进行优化。 ^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$
参考资料: http://zhidao.baidu.com/question/125006373.html
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-29
Reg=/^\d{4}-([1-9]|(1[0-2]))-([1-9]|([1-2][0-9]|30|31))$/;我是按你意思的写的,没有测试过简单一点就这样吧:reg=/^\d{4}-\d{2}-\d{2}$/;

javascript校验时间
正则表达式,最方便了!if(f.startTime.value!=''&&!\/^[1|2]\\d{3}-[0|1][0-2]-[1-3]\\d$\/.test(f.startTime.value)){err += '开始时间填写有误,正确的格式为[yyyy-mm-dd]\\r\\n';}

用正则表达式匹配日期和时间
\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} \/\/标准的日期加时间 满意请采纳

jsp中日期如何判断
alert("对不起,请您按以下格式输入日期:\\n2005-5-5或2005\/1\/1");form1.inputdate.focus();return false;} return true;} 注意:以上代码中的form1是表单名,inputdate是输入日期用的单行文本框的名字。在页面中加入以上代码后,再在表单提交按钮上加入单击事件onClick="return checkdate()"即可。...

急~~~ Javascript中用于时间检验的正则式是什么?
正则式就是 \/^([0-1][0-9]|2[0-4]):[0-5][0-9]$\/ 看我的例子:将在屏幕中弹出一个输入框, 输入一个时间值,对输入的时间值是否合法时行判断 var pattern = \/^([0-1][0-9]|2[0-4]):[0-5][0-9]$\/;var input = prompt("请输入一个时间:", "00:00");alert(patter...

如何用javascript中的正则判断日期
最简单的正则 如 : \\d{4}-\\d{2}-\\d{2} 但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题... 对于日期的有效范围,不同的应用场景会有所不同。MSDN中定义的DateTime对象的有效范围是:0001-01-01 00:00:00到9999-12-31 23:59:59。 UNIX时间戳的0按照ISO 8601规范为 :1970-01...

js 判断是否是时间
(\\d{1,2})(\\-)(\\d{1,2})$\/;正则表达式,你可以找找这方面的资料 大概说说吧 \/^:行首 \/:行尾 (\\d{4}):正好匹配4个数字(应该是代表年)(\\-):中间有一杠 (\\d{1,2}):1位到2位的数字(应该代表月)(\\-):还是一杠 (\\d{1,2}):还是代表1到2位的数字(代表日期)...

javascript 正则表达式验证 MM\/dd\/yyyy 怎么写
这个表达式关键是年代,需要分解一下,这样看起来就会清晰了 这里给出两种匹配情况,1. 年月日匹配宽度不变: 年份4位,月份2位,日2位 2010-2000 -- 20[01]\\d 1999-1000 -- 1\\d{3} 0999-0100 -- 0[1-9]\\d\\d 0099-0010 -- 00[1-9]\\d 0009-0000 -- 000\\d 表达式如下:^(20[...

怎么样,JAVASCRIPT校验时间啊!
使用正则表达式 function isDate(txt){ return ((^(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\\d|3[01]))|(((1[6-9]|[2-9]\\d)\\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\\d|30))|(((1[6-9]|[2-9]\\d)\\d{2})-0?2-(0?

如何使用JavaScript和正则表达式进行数据验证
RegExp对象包含了正则表达式的模式,该对象的方法和属性可以用来匹配字符串,有两种方法可以用来创建RegExp对象的实例:使用构造函数或使用正则表达式文本模式的文字方式,第二个参数是可选的,该参数可以指定该搜索是全局的(g)、忽略大小写的(i)或者全局同时忽略大小写(gi)。一般JavaScript的验证几乎都是用...

js 验证是否有效日期
通常来说,javascript验证日期的有效性可以通过正则判断 但正则表达式无法精准验证日期的有效性,你无法通过正则表达式判断出1900-02-29是非法日期而2000-02-29是合法日期,而且正则表达式匹配起来比较繁琐。要想精确验证,最容易想到的方法就是通过月份判断日期是否合法(1~28\/29\/30\/31),你可以用一个数组...

相似回答