日期验证的正则表达式,兼容性很强
2005-06-09 23:18
337 查看
今天上午就在测试一个关于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>
<!--
/*
* 函数: 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>
相关文章推荐
- 验证日期的Java正则表达式
- 身份证号,出生日期等的js正则表达式验证
- js验证日期时间格式正则表达式
- 几个C#日期、时间验证的正则表达式
- 正则表达式 日期 验证
- JAVA日期验证 正则表达式,包括润二月(转)
- 常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等,一般前台js验证,来这里就够了...
- ASP.NET MVC 3 Validation - 正则表达式验证RegularExpressionAttribute之日期验证
- 正则表达式验证日期
- 常用正则表达式大全,手机、电话、邮箱、身份证(最严格的验证)、IP地址、网址、日期等,一般前台js验证
- javascript 验证日期时间的正则表达式
- 验证有效 日期时间的正则表达式(已解决闰二月)
- 正则表达式收藏【日期的验证表达式】
- 验证日期的正则表达式比较全面地验证
- 正则表达式验证日期(多种日期格式)——转载
- 正则表达式来验证日期
- 验证日期的正则表达式
- 日期验证的正则表达式
- 日期验证正则表达式(备忘)
- 验证日期的Java正则表达式