javascript 利用正则表达式控制 日期的输入

2008-02-23 09:13:52来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="datetimevalidate.ASPx.cs"
Inherits="datetimevalidate" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html XMLns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>

<script type="text/JavaScript" language="Javascript">
function fnOnclick()
{
var strDate = document.all.cnlDate.value;

if(!fnCheckDate(strDate))
{
alert("日期不合法");
}
else
{
alert("日期合法");
}
}


function fnCheckDate(strDate)
{
var strCheckDate = strDate ""; //进一步确认哪来判断的肯定是一串字符串

if(strCheckDate == "") //空字符串,不是合法的日期字符串,返回false
{
return false;
}
debugger;
//判断传进来的数据是那种格式写成日期
var intIndex = -1; //利用正则表达式,查找字符串中是否包含某个字符,没找到为-1,否则为 (0 - String.length - 1)
var arrDate; //分别存储年月日
var regExpInfo = /\./; //正则表达式,匹配第一个出现 "."的位置

//在这里,我之所以不使用replace函数把所有的"."和"/"换成"-",然后分别存储年月日,是因为用户有可能输入 2001/3-2,就判断不出它是不合法日期了
intIndex = strCheckDate.search(regExpInfo); //查找是否含有 "."
if(intIndex == - 1) //不包含
{
regExpInfo = /-/;
intIndex = strCheckDate.search(regExpInfo);

if(intIndex == -1)
{
regExpInfo = /\//; //查找是否含有 "/"
intIndex = strCheckDate.search(regExpInfo);

if(intIndex == -1)
{
arrDate = new Array(); //只包含年或格式为20010307
if(strCheckDate.length==4)
{
arrDate[0]=strCheckDate;
window.alert(arrDate[0]);
}
else if(strCheckDate.length==6)
{
arrDate[0]=strCheckDate.substring(0,4);
arrDate[1]=strCheckDate.substring(4,6);

}
else if(strCheckDate.length==8)
{
arrDate[0]=strCheckDate.substring(0,4);
arrDate[1]=strCheckDate.substring(4,6);
arrDate[2]=strCheckDate.substring(6,8);

}
else
{
return false;
}
}
else
{
arrDate = strCheckDate.split("/"); //2001/3/7 型
}
}
else
{
arrDate = strCheckDate.split("-"); //2001-3-7 型
}
}
else
{
arrDate = strCheckDate.split("."); //2001.3.7 型
}

if(arrDate.length > 3) //如果分离出来的项超过3,除了年月日还有其它的,不合法日期,返回false
{
return false;
}
else if(arrDate.length > 0)
{
//判断年是否合法
if(fnIsIntNum(arrDate[0])) //是正整数
{
if(parseInt(arrDate[0]) < 1 || parseInt(arrDate[0]) > 9999) //年范围为1 - 9999
{
return false;
}
}
else
{
return false; //年不是正整数,错误
}

//判断月是否合法
if(arrDate.length > 1)
{
if(fnIsIntNum(arrDate[1])) //是正整数
{
if(parseInt(arrDate[1]) < 1 || parseInt(arrDate[1]) > 12)
{
return false;
}
}
else
{
return false;
}
}


//判断日是否合法
if(arrDate.length > 2)
{
if(fnIsIntNum(arrDate[2])) //是正整数
{
var intDayCount = fnComputerDay(parseInt(arrDate[0]),parseInt(arrDate[1]));
if(intDayCount < parseInt(arrDate[2]))
{
return false;
}
}
else

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:JavaScript学习小结

下一篇:Apache OFBiz