科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道javascript 利用正则表达式控制 日期的输入

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文是关于javascript 利用正则表达式控制 日期的输入的有关内容.

作者:Jerry 来源:CSDN 2008年3月17日

关键字: 正则表达式 JavaScript java

  • 评论
  • 分享微博
  • 分享邮件

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ttp://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
           {
            return false;
           }
          }
           
         }
         return true;
        }

        //**********************************************************************************************************
        //判断一个数是否为正整数
        //参数:strNum ---- 需要判断的字符串
        //返回值:true ---- 整数 false ---- 非整数
        function fnIsIntNum(strNum)
        {
         var strCheckNum = strNum + "";
         if(strCheckNum.length < 1)         //空字符串
          return false;
         else if(isNaN(strCheckNum))         //不是数值
          return false;
         else if(parseInt(strCheckNum) < 1)       //不是正数
          return false;
         else if(parseFloat(strCheckNum) > parseInt(strCheckNum)) //不是整数
          return false;
        
         return true;
        }

//**********************************************************************************************************
//功能:判断intYear年intMonth月的天数
//返回值:intYear年intMonth月的天数
function fnComputerDay(intYear,intMonth)
{
    var dtmDate = new Date(intYear,intMonth,-1);
    var intDay = dtmDate.getDate() + 1;
   
    return intDay;   
}


    </script>

</head>
<body>
    <form id="form1" runat="server">
        <div>
           
            <input name="cnlButton" id="cnlButton" type="button" value="日期检查" onclick="fnOnclick()">
            <asp:TextBox ID="cnlDate" runat="server"></asp:TextBox></div>
    </form>
</body>
</html>
 

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章