求一js正则表达式验证YYYY/MM/DD格式日期。

作者&投稿:晨标 (若有异议请与网页底部的电邮联系)
JS怎么用正则表达式判断输入的日期格式为 yyyy-mm-dd~

/^\d{4}\-\d{2}\-\d{2}$/
这里只是限制了格式必须是yyyy-mm-dd ,如果想做的年月日校验很精准,那比较麻烦!

呵呵,你的问题有点特殊,还要带小时。不过也可以做。已经作好了。代码如下。保存为html文件。直接点击运行即可。



用正则表达式对日期字符串进行验证:

说明:
1:日期格式为,如:2008/8/8 12或是2008/08/08 23都是正确的。
2:可以对0000~9999年中的任一天的日期进行合法性验证。
3:对于闰年时2月有29号此种情况也进行有效验证。
4:举例不合格日期,1984/1/32 25 和 1984/04/31 25 和 2001/02/29 25










//验证日期的格式为****/**/** **,
//已经考虑到了闰年的问题,如2001/2/29是不允许的。而2008/2/29则是可以的。
//入口参数:日期字符串;
//出口参数:true|false
function verify_date(date_str)
{
var myReg=new RegExp("^(?:(?:([0-9]{4}/(?:(?:0?[1,3-9]|1[0-2])/(?:29|30)|((?:0?[13578]|1[02])/31)))|([0-9]{4}/(?:0?[1-9]|1[0-2])/(?:0?[1-9]|1\\d|2[0-8]))|(((?:(\\d\\d(?:0[48]|[2468][048]|[13579][26]))|(?:0[48]00|[2468][048]00|[13579][26]00))/0?2/29))) (0?\\d|1\\d|2[0-3]))$");
return myReg.test(date_str);
}

代码如下:

/*日期验证dd/mm/yyyy*/

functionisDate(str){

vardate=str;

varresult=date.match(/^([0]?[1-9]|[1|2][0-9]|[3][0|1])[/]([0]?[1-9]|[1][0-2])[/]([0-9]{4}|[0-9]{2})$/);

if(result==null)

returnfalse;

vard=newDate(result[3],result[2]-1,result[1]);

return(d.getFullYear()==result[3]&&(d.getMonth()+1)==result[2]&&d.getDate()==result[1]);

}

扩展资料

java用正则表达式判断输入的日期格式为yyyy/MM/dd

publicstaticvoidmain(String[]args)throwsParseException{

Stringstr1="2012-05-15";

Stringstr2="2012/05/15";

if(zzbd(str1)){

System.out.println("str1havematch!");

}else{System.out.println("str1don'tmatch!");}

if(zzbd(str2)){

System.out.println("str2havematch!");

}else{System.out.println("str2don'tmatch!");}}

publicstaticbooleanzzbd(Strings)

{

Patternpattern=Pattern.compile(\\d{4}/\\d{2}/\\d{2});

Matchermatcher=pattern.matcher(s);

if(matcher.find())

{

returntrue;

}else{

returnfalse;

}

}

}



来说,条件越多的正则表达式越严格,但表述起来也越麻烦,你可以根据需要选择不同的正则表达式去判别 

  1. 只检查格式: \d{4}-\d{2}(-\d{2})?

  2. 简单的日期判定(比如说2000-02-30仍然通过判定): \d{4}-(((0[1-9])|(1[0-2])))(-((0[1-9])|([1-2][0-9])|(3[0-1])))?

  3. 比较严格的日期判定(但还是没有闰年2月29的判定): \d{4}-(((0(1|3|5|7|8))|(1(0|2)))(-((0[1-9])|([1-2][0-9])|(3[0-1])))?)|(((0(2|4|6|9))|(11))(-((0[1-9])|([1-2][0-9])|(30)))?)|((02)(-((0[1-9])|([1-2][0-9])))?)

  4. 严格的日期判定(包括闰年的判定): (\d{4}-(((0(1|3|5|7|8))|(1(0|2)))(-((0[1-9])|([1-2][0-9])|(3[0-1])))?)|(((0(2|4|6|9))|(11))(-((0[1-9])|([1-2][0-9])|(30)))?)|((02)(-((0[1-9])|(1[0-9])|(2[0-8])))?))|(((([0-9]{2})((0[48])|([2468][048])|([13579][26]))|(((0[48])|([2468][048])|([3579][26]))00)))-02-29)



/^[1-9]\d{3}\/(0[1-9]|1[0-2])\/(0[1-9]|[1,2][0-9]|3[0,1])$/

此正则表达式限制了月份为1到12月,日期为1到31日

^[12]\d{3}/(?:0[1-9]|1[0-2])/(?:0[1-9]|[12][0-9]|30|31)$
匹配1000/01/01到2999/12/31日之间的日期,具体规则如下:
1、年是4个数字,月、日是2个数字。
2、年必须在[1000,2999]内;月必须在[1-12]内,1-9月前须加0,如01;日必须在[1-31]内,1-9日前须加0,如09;
3、年、月后面必须跟/
以为判断2月天数挺麻烦,干脆都改为1-31日

var pre=new RegExp('[1-2][0-9]{3}\/[0|1]+[1-9]+\/[0-3]+[1-9]+');
var s=pre.test('2016/01/0');
console.log(s);
返回true或者false

求一个js和php正则表达式
答:s=s.replace(/(.*?)<\/div>/gi,'$1');alert('JS输出:\n'+s);//document.write('JS输出:\n'+s); <?php s='<DIV class="xxx">abc1</DIV> <DIV class="xxx">abc2</DIV> <DIV class="xxx">abc3</DIV>';s=preg_replace('/(.*?)<\/div>/i','$1',$s);echo 'PH...

js中正则表达式语法KPI(年统计|2011-04-15 18:49:04|qqq|www|eee|rrr|...
答:var $1 = arguments[1],$2 = arguments[2],$3 = arguments[3];;//$1第一个捕获组,$2第二个捕获组,如只想取前三个字符返回 return $1.match(/\w{3}/) + $2 + $3.match(/\w{3}/)});alert(temp);

正则表达式 两头一样中间不一样该怎么批量替换求解
答:用正向预查找,(?<=xxx)这里是你要的替换的部分(?<=yyy),我写的如果不对你可以搜一下这个概念,这个概念的意思是匹配两边符合xxx和yyy结构的中间那部分,两边部分不取值,只取中间部分

求一个大于0 小于100 的浮点数正则表达式?
答:匹配三种格式的数:0.xxxxxx (xxx中存在至少一个非0的数字) 或者 x.yyyy (x为非0的数字,y为数字,.yyy可有可无) 或者 xy.yyy(x为非0的数字,y为数字,.yyy可有可无)ps:这个正则相对更严格,00.10,01.234 ,06等也会被认为是不匹配的 ...

怎样用正则表达式匹配IP地址与域名
答:匹配完整域名的正则表达式:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?一个IP字串,由四段组成,每一段是0~255的数字,段与段之间用小数点隔开,比如61.139.2.69就是一个合法的IP字串。如果正则表达式写成\d{1,3}(\.\d{1,3}){3}无疑是...

JSP如何防范SQL注入攻击
答:SQL注入攻击的总体思路:发现SQL注入位置;判断服务器类型和后台数据库类型;确定可执行情况对于有些攻击者而言,一般会采取sql注入法。下面我也谈一下自己关于sql注入法的感悟。注入法:从理论上说,认证网页中会有型如:select * from admin where username='XXX' and password='YYY' 的语句,若在...

正则表达式如何提取html标签里面的内容
答:只提取rufus,jenny?不行吧。没有规律啊。是把所有的标签内内容提取了吧。如果是提取标签内的话这么写: Pattern pattern = Pattern.compile(">([^<]+)<"); Matcher macher = pattern.matcher("RufusDan, Jenny! Over here! JennyHey, dad! RufusHey, hey! You made it. Welcome back!

如何防止sql注入
答:注入法:从理论上说,认证网页中会有型如:select * from admin where username=‘XXX‘ and password=‘YYY‘ 的语句,若在正式运行此句之前,如果没有进行必要的字符过滤,则很容易实施SQL注入。如在用户名文本框内输入:abc’ or 1=1-- 在密码框内输入:123 则SQL语句变成:select * ...