今天上午就在测试一个关于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"> &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; h.isBetween(0, 23) &amp;&amp; n.isBetween(0, 59) &amp;&amp; s.isBetween(0, 59) &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; } } //--&gt; &lt;!--EndFragment--&gt; &lt;/BODY&gt;&lt;/HTML&gt; </script><script language="javascript" type="text/javascript"> &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; h.isBetween(0, 23) &amp;&amp; n.isBetween(0, 59) &amp;&amp; s.isBetween(0, 59) &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; } } //--&gt; &lt;!--EndFragment--&gt; &lt;/BODY&gt;&lt;/HTML&gt; </script>