日期验证的正则表达式,兼容性很强

今天上午就在测试一个关于Javascript中检测日期字符串的正则表达式,因为在开发WEB中,经常会处理日期字符串,一直没时间好好整理,现在开始整理,今天先完成了正则表达式,过几天再建立关于日期类的类库.完整代码如下:

<SCRIPT language=javascript>
<!--
 /*
 * 函数: parseDate
 * 说明: 解释日期字符串
 * 参数:
 *   无
 * 修改: 2005.06.04
 */

function parseDate(src){
 var CST_ERROR = "Invalid Date String!";
 var datePat = /^(/d{2}|/d{4})(//|/-|/u5E74)(/d{1,2})(//|/-|/u6708)(/d{1,2})(/u65E5){0,1}((/u0020)(/d{1,2})(/:|/u65F6)(/d{1,2})((/:|/u5206)(/d{1,2})(/u79D2){0,1}((/u0020)(/d{1,3})){0,1}(/u6BEB/u79D2){0,1}){0,1}){0,1}$/;
  var matchArray = src.match(datePat);
  try{
  if (matchArray == null) {
   throw CST_ERROR;
  }
  var y = parseInt(matchArray[1]);
  var m = parseInt(matchArray[3]);
  var d = parseInt(matchArray[5]);
  var h = matchArray[9];
  var n = matchArray[11];
  var s = matchArray[14];
  var l = matchArray[18];
  
  h = (h.trim() == "") ? 0 : parseInt(h);
  n = (n.trim() == "") ? 0 : parseInt(n);
  s = (s.trim() == "") ? 0 : parseInt(s);
  l = (l.trim() == "") ? 0 : parseInt(l);
  
   if (isValidYMD(y, m, d) && h.isBetween(0, 23) && n.isBetween(0, 59) && s.isBetween(0, 59) && l.isBetween(0, 999)){
   return new Date(y, (m-1), d, h, n, s, l);
   }
   else{
   throw CST_ERROR;
   }
  }
  catch(e){
  //alert(e);
  return null;
  }
}
//-->
</SCRIPT>
<script language="javascript" type="text/javascript"> &amp;lt;!-- /* * 函数: parseDate * 说明: 解释日期字符串 * 参数: * 无 * 修改: 2005.06.04 */ function parseDate(src){ var CST_ERROR = "Invalid Date String!"; var datePat = /^(/d{2}|/d{4})(//|/-|/u5E74)(/d{1,2})(//|/-|/u6708)(/d{1,2})(/u65E5){0,1}((/u0020)(/d{1,2})(/:|/u65F6)(/d{1,2})((/:|/u5206)(/d{1,2})(/u79D2){0,1}((/u0020)(/d{1,3})){0,1}(/u6BEB/u79D2){0,1}){0,1}){0,1}$/; var matchArray = src.match(datePat); try{ if (matchArray == null) { throw CST_ERROR; } var y = parseInt(matchArray[1]); var m = parseInt(matchArray[3]); var d = parseInt(matchArray[5]); var h = matchArray[9]; var n = matchArray[11]; var s = matchArray[14]; var l = matchArray[18]; h = (h.trim() == "") ? 0 : parseInt(h); n = (n.trim() == "") ? 0 : parseInt(n); s = (s.trim() == "") ? 0 : parseInt(s); l = (l.trim() == "") ? 0 : parseInt(l); if (isValidYMD(y, m, d) &amp;amp;&amp;amp; h.isBetween(0, 23) &amp;amp;&amp;amp; n.isBetween(0, 59) &amp;amp;&amp;amp; s.isBetween(0, 59) &amp;amp;&amp;amp; l.isBetween(0, 999)){ return new Date(y, (m-1), d, h, n, s, l); } else{ throw CST_ERROR; } } catch(e){ //alert(e); return null; } } //--&amp;gt; &amp;lt;!--EndFragment--&amp;gt; &amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt; </script><script language="javascript" type="text/javascript"> &amp;lt;!-- /* * 函数: parseDate * 说明: 解释日期字符串 * 参数: * 无 * 修改: 2005.06.04 */ function parseDate(src){ var CST_ERROR = "Invalid Date String!"; var datePat = /^(/d{2}|/d{4})(//|/-|/u5E74)(/d{1,2})(//|/-|/u6708)(/d{1,2})(/u65E5){0,1}((/u0020)(/d{1,2})(/:|/u65F6)(/d{1,2})((/:|/u5206)(/d{1,2})(/u79D2){0,1}((/u0020)(/d{1,3})){0,1}(/u6BEB/u79D2){0,1}){0,1}){0,1}$/; var matchArray = src.match(datePat); try{ if (matchArray == null) { throw CST_ERROR; } var y = parseInt(matchArray[1]); var m = parseInt(matchArray[3]); var d = parseInt(matchArray[5]); var h = matchArray[9]; var n = matchArray[11]; var s = matchArray[14]; var l = matchArray[18]; h = (h.trim() == "") ? 0 : parseInt(h); n = (n.trim() == "") ? 0 : parseInt(n); s = (s.trim() == "") ? 0 : parseInt(s); l = (l.trim() == "") ? 0 : parseInt(l); if (isValidYMD(y, m, d) &amp;amp;&amp;amp; h.isBetween(0, 23) &amp;amp;&amp;amp; n.isBetween(0, 59) &amp;amp;&amp;amp; s.isBetween(0, 59) &amp;amp;&amp;amp; l.isBetween(0, 999)){ return new Date(y, (m-1), d, h, n, s, l); } else{ throw CST_ERROR; } } catch(e){ //alert(e); return null; } } //--&amp;gt; &amp;lt;!--EndFragment--&amp;gt; &amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt; </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值