//****************************************************************************
// Function ID : Common_ChkDate
// I/O : (I) datestr 日期对象
// RETURN VALUE : true/false
// DESCRIPTION : onBlur,判断输入的日期是否合法
//****************************************************************************
function Common_ChkDate(datestr) {

// 正規表現 判断日期格式是否是"yyyy/MM/dd"
if (!datestr.match(/^\d{4}\/\d{1,2}\/\d{1,2}$/)) {
return false;
}

//判断月和日是否是两位,如果是1位,就在前面加“0”
if (datestr.length < 10) {
var l_splitDate = datestr.trim().split('/')
for (i = 0; i < l_splitDate.length; i++) {
if (l_splitDate[i].length == 1) {
l_splitDate[i] = "0" + l_splitDate[i]
}
}
l_splitDate = l_splitDate[0] + '/' + l_splitDate[1] + '/' + l_splitDate[2]
datestr = l_splitDate
}

// 将日期转换为数值类型
var iYear = datestr.substr(0, 4) - 0;
var iMonth = datestr.substr(5, 2) - 0;
var iDay = datestr.substr(8, 2) - 0;

//有効年范围1753~9999
if ((Number(iYear) > 9999) || (Number(iYear) < 1753)) {
return false;
}

// 月份正常时31天
if ((iMonth >= 1) && (iMonth <= 12)) {
var iMaxDay = 31;

// 判断哪几个月份是30天
switch (iMonth) {
case 4:
case 6:
case 9:
case 11:
iMaxDay = 30;
break;
case 2:

// 能被4整除的闰年
if ((iYear % 4) == 0) {
// 也能被 100 整除是闰年
if ((iYear % 100) == 0) {
// 也能被 400 整除 是闰年
if ((iYear % 400) == 0) {
iMaxDay = 29;
} else {
iMaxDay = 28;
}
} else {
// 能被4 整除 不能被 100 整除闰年
iMaxDay = 29;
}
} else {
// 不能被 4 整除的是
iMaxDay = 28;
}
break;
default:
break;
}

//天的取值范围
if ((iDay >= 1) && (iDay <= iMaxDay)) {
return true;
}
}
return false;
}

js正则判断日期的更多相关文章

  1. js正则格式化日期时间自动补0

    原文 js正则格式化日期时间自动补0 背景 时间日期格式化的需求很常见,也有很多工具类转换方法,比如需要将2022-3-4这种日期格式转化为2022-03-04,也就是实现个位数月份或天数日期自动前置 ...

  2. 用js正则判断输入的两位字符,第一位是数字16进制的,第二位是I、O、Q、U除外的字母(A到Z)

    项目中遇到客户的需求变化,要验证某个数据的正确性,判断输入的两位字符,第一位是数字16进制的,第二位是I.O.Q.U除外的字母(A到Z). 本来对js不熟练,网上参考了一下js正则验证的规则,使用正则 ...

  3. js正则判断电话/手机/邮箱/

    用途:校验ip地址的格式 输入:strIP:ip地址返回:如果通过验证返回true,否则返回false:*/ function isIP(strIP) { if (isNull(strIP)) ret ...

  4. js 正则判断字符串下划线的长度

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. js正则判断实现18位数字

    js实现18位数字 var stuCardReg = /^[0-9]{18}/; var stuCard = $('.inp).val();//获取input框中的数值 if (!stuCardReg ...

  6. JS正则判断输入框是否仅仅含有汉字、字母和数字

    代码如下: if($.trim($("#user_api_register_form").find("input[name='user_name']").val ...

  7. js正则判断字符串中是否包含特殊字符和空格

    字符串只能是数字.字母和中文组成,不能包含特殊符号和空格. /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/

  8. 如何用js检测判断时间日期的间距

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. js正则表单验证汇总,邮箱验证,日期验证,电话号码验证,url验证,信用卡验证,qq验证

    本文主要汇总各种正则验证,很多都是转载,本人也会尽可能验证准确性,如有错误欢迎留言 //trim()方法在有些浏览器中不兼容,最好自己重写一下 String.prototype.trim=functi ...

随机推荐

  1. Android应用程序组件之间的通信Intent和IntentFilter

    Android应用程序的基本组件,这些基本组建除了Content Provider之外,几乎全部都是依靠Intent对象来激活和通信的. 下面介绍Intent类,并通过例子来说明Intent一般用法 ...

  2. jdk7.NIO.2学习笔记之目录文件及权限

    package com.zl.jdk7; import java.io.File; import java.io.IOException; import java.nio.file.Path; imp ...

  3. TOJ 2641 Gene

    描述 How can millions of different and complex structures be built using only a few simple building bl ...

  4. FileZilla的使用(包括Server和Client两个程序)

    1.安装 FileZillaServer和FileZillaClient,到官网去下载 https://filezilla-project.org/ 2.启动 FileZillaServer 它会提示 ...

  5. Servlet3.0的文件上传功能

    在Servlet3.0之前,文件上传需要借助于第三方插件,在Servlet3.0之后,Servlet本身开始支持文件上传功能. 获取上传的文件可以通过HTTPServletRequest的getPar ...

  6. Linux 套接字编程 - TCP连接基础

    第五章的内容,实现一个echo服务器和对应的客户端,主要收获: 0. TCP socket编程主要基本步骤 1. SIGCHLD信号含义(子进程退出时向父进程发送,提醒父进程对其状态信息进行一个获取) ...

  7. mysql四-1:单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

  8. 企业Web应用创新实验

    我现在设计一个小而美的管理工具,为此费劲心思搞“创新”.“创新”一词已经被滥用,但我...真的想弄出一点创新. 基于Web的企业应用,如CRM.项目管理.OA等软件,尽管经历十几年发展,所谓的理论有所 ...

  9. 使用 Python 设置数据的路径

    使用 Python 设置数据的路径 编程语言(如 Python)将反斜线 (\) 用作转义字符.例如,\n 表示换行符,\t 表示制表符.指定路径时,可使用正斜线 (/) 代替反斜线.使用两条反斜线( ...

  10. OOM android

    1.[原创]Android 系统稳定性 - OOM(一) 2.[原创]Android 系统稳定性 - OOM(二) 3.Android内存泄露分析(MemoryAnalyzer工具)