`
weigang.gao
  • 浏览: 467423 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

js校验是不是日期 RegExp

 
阅读更多

1.RegExp是JavaScript中的一个内置对象,为正则表达式。

<script  language="javascript">
/*
RegExp 是javascript中的一个内置对象。为正则表达式。
RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串,以此类推,RegExp.$2,RegExp.$3,..RegExp.$99总共可以有99个匹配
给你看了例子就知道了
*/
var r= /^(\d{4})-(\d{1,2})-(\d{1,2})$/; //正则表达式 匹配出生日期(简单匹配)     
r.exec('1985-10-15');
s1=RegExp.$1;
s2=RegExp.$2;
s3=RegExp.$3;
alert(s1+" "+s2+" "+s3);//结果为1985 10 15
</script>
 

2.区别:js中test 与exec 的区别?

 

3.简单的日期校验: 

//是否是日期
function isDate(str) {
    var rc = true;
    var year,month,day;
    reg = /^(\d{4})[-\/]?(\d{2})[-\/]?(\d{2})$/;

    if(!reg.test(str))
       return false;

    year  = eval(RegExp.$1);
    month = eval(RegExp.$2);
    day   = eval(RegExp.$3);

	if(str=="99999999" || str=="99991231"){
		return true;
	}

    if(year<1900 || year>2099)
        rc = false;
    if( (month < 1) || (month > 12) || (day < 1) || (day > 31) )
        return false;

    switch (month) {
    case 1 :
    case 3 :
    case 5 :
    case 7 :
    case 8 :
    case 10:
    case 12:
    if (day >31)
    rc = false;
    break;
    case 4 :
    case 6 :
    case 9 :
    case 11:
    if (day >30)
    rc = false;
    break;

    case 2 :
    if ( (year%4 == 0) && (year%100 != 0) || (year%400 == 0) ) {
    if( day > 29)
        rc = false;
    }
    else {
    if( day >28)
        rc = false;
    }
    break;

    default :
        rc = false;
    }
    return rc;
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics