给出一个yyyy-MM-dd日期格式的字符串变量,怎么用js正则表达式匹配出从2000-01-01到所给日期这个时间段

在线坐等大神回复

第1个回答  2013-03-20
var date0= new Date();date0.setFullYear(2000,01,01);
var date1=new Date();
date1.setFullYear(yyyy,MM,dd);
iDays = parseInt(Math.abs(date1 -date0) / 1000 / 60 / 60 /24);

iDays就是相差的天数。追问

不是要求这个时间段的天数, 我是需要将这一段时间的日期用一个js正则表达式匹配出来

追答

能不能避开正则,正则是对字符串的比较,对日期的直接比较不合适。

将待判断的新字符串unknow 仍然转换成date类型
然后判断是不是在给出的时间段内。

追问

这个是作为参数,它的类型就是正则,所以没法避开不用正则

第2个回答  2013-03-20
你什么意思?
例如yyyy-MM-dd日期为2013-03-20.
就给出个正则,需要匹配2000-01-01 到2013-03-20 的正则。
其中2013-03-20.是动态的?追问

是的,是个变量,而且是字符串型的

追答

必须要正则吗?还是java检验一下就好了。
形成正则麻烦啊。一会儿给你。

想了想,很复杂啊,其实手动写还一个,但是用程序写一个自动的,不简单啊。

追问

是的,头都大了,但是必须要用正则,因为这个参数类型就是正则。

追答

为什么一定要用正则?你自己再写个方法不行吗?用正则的话,可能你接受不了。
匹配2000-01-01 到2013-03-20的正则。没有考虑起始时间的特殊性,结束时间考虑了一下。

其最终的形式可能如下。这还是未考虑2月的闰月,每个月有30及31天2种的情况。
/^(2[0][0-1][0-2]\-((0[1-9])|10|11|12)\-(([0-2][1-9])|10|20|30|31))|(2013\-[0][1-2]\-(([0-2][1-9])|10|20|30|31))|((2013\-03\-(([0-1][1-9])|10|20)))$/;
如果是非常完整的逻辑的话,这个正则能杀人。。。
你用的jquery的校验框架?

追问

不是,我已经搞定了,妹纸的,差点把我弄疯了,thank you

追答

怎么搞定的说来看看?不是用正则吧。

本回答被提问者采纳
相似回答