js 日期有效性验证 的一点思考
在日常项目中经常遇到日期输入验证,以前我遇到的项目是日期只能通过日历控件来选择,最近我同事遇到一个问题是日期除了可以通过日历控件来输入也可以手动来输入,可是我们项目中居然没有日期格式的验证方法(备注:产品已经运行10多年了)。于是打算自己来写一个日期验证的方法,结果在网上一搜发现还有不少,经过验证并且觉得比较好用的code 如下:
function isdate(str) {
var result = str.match(/^(\d{,})(-|\/)(\d{,})\(\d{,})$/);
if (result == null) return false;
var d = new Date(result[], result[] - , result[]);
return (d.getFullYear() == result[] && d.getMonth() + == result[] && d.getDate() == result[]);
}
function isdatetime(str) {
var result = str.match(/^(\d{})(-|\/)(\d{,})\(\d{,}) (\d{,}):(\d{,}):(\d{,})$/);
if (result == null) return false;
var d = new Date(result[], result[] - , result[], result[], result[], result[]);
return (d.getFullYear() == result[] && (d.getMonth() + ) == result[] && d.getDate() == result[] && d.getHours() == result[] && d.getMinutes() == result[] && d.getSeconds() == result[]);
}
function istime(str) {
var a = str.match(/^(\d{,})(:)?(\d{,})\(\d{,})$/);
if (a == null) { return false; }
if (a[] >= || a[] >= || a[] >= ) {
return false
}
return true;
}
function compareDate(d1, d2) {
return ((new Date(d1.replace(/-/g, "\/"))) < (new Date(d2.replace(/-/g, "\/"))));
}
按理说,项目一旦开始就应该有一些通用的组件(方法)比如这里的日期验证,还有email格式验证 等等。(吐个槽,前一段时间有个任务是修改eamil的格式,按理说验证email的格式在js里面应该只有一个方法啊,但是经过项目调查后发现有大概10个地方都在验证email格式是否正确,也就是说我要改这个10个地方,如果少改了一个地方就是一个bug。。。。。。,项目架构如此,该问bug能不少吗?产品质量能提高吗?)。
我也经过过设计模式,设计原则的时代,近10年我开发的理念是“为复用而开发,为使用而组装”,code的复用度将是项目和产品的一个重要的技术指标。
js 日期有效性验证 的一点思考的更多相关文章
- js日期格式验证
js日期格式验证 <input type="text" maxLength='10' onkeyup='checkDate(this.value,jQuery(this)); ...
- js日期的写法,获取girdviw的行数、提示信息、验证数量信息
//制订日期(js日期的写法) var myDate = new Date(); var theDate = myDate.toLocaleDateString(); //获取今天的日期 //获取控 ...
- js身份证号有效性验证
1.简述 最近做的系统有用到实名验证的,起初对于用户身份证号只是简单地使用正则表达式进行验证, 很多无效的身份证号就成了漏网之鱼. 导致后台存表里很多无效的身份证号,随便输入用户名和身份证号就可以实名 ...
- JS表单验证-12个常用的JS表单验证
JS表单验证-12个常用的JS表单验证 最近有个项目用到了表单验证,小编在项目完结后的这段时间把常用的JS表单验证demo整理了一下,和大家一起分享~~~ 1. 长度限制 <p>1. 长度 ...
- jquery.validation.js 表单验证
jquery.validation.js 表单验证 官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation jQuer ...
- JS获取当前日期时间及JS日期格式化
Js获取当前日期时间: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份( ...
- Jquery.validate.js表单验证插件的使用
作为一个网站web开发人员,以前居然不知道还有表单验证这样好呀的插件,还在一行行写表单验证,真是后悔没能早点知道他们的存在. 最近公司不忙,自己学习一些东西的时候,发现了validation的一个实例 ...
- Js 日期操作
Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); ...
- js表单验证工具包
常用的js表单验证方法大全 /* 非空校验 : isNull() 是否是数字: isNumber(field) trim函数: trim() lTrim() rTrim() 校验字符串是否为空: ch ...
随机推荐
- redis pipeline
redis pipeline 简而言之就是把多个redis命令打包,一起发送给redis server,并且一起返回结果,减少客户端和服务器之间的多次“折返跑”
- 主DNS配置
一,安装BIND [root@localhost ~]# yum install bind bind-chroot bind-utils Loaded plugins: product-id, sub ...
- 【erlang】IPv6格式转IPv4
erlang里面的httpd模块保存的http请求头里面,其中remote_addr 保存的是IPv6的格式. 即使是IPv4,也会用IPv6的格式来保存.如 {remote_addr, " ...
- C# web winform 路径
string path = ""; if (System.Environment.CurrentDirectory == AppDomain.Curr ...
- [Chapter 3 Process]Practice 3.9 Describe the actions token by a kernel to content-switch between processes.
3.9 Describe the actions token by a kernel to content-switch between processes. 答案: 内核在进行进程上下文切换时, 首 ...
- 黑马程序员_Java基础:多功能小窗口,swing,io,net综合应用
------- android培训.java培训.期待与您交流! ---------- 概念原理的理解,不代表能熟练应用. 如果将多个知识点关联并应用起来,这能加快我们对知识的掌握. 作为一个初学者, ...
- 5.11-5.15javascript制作动态表格
制作动态表格的主要是运用js中表格类的insertRow.insertCell简易添加行和列的代码,不过要注意每行添加的表格是有位置行编号的,每行的编号为rows.length-1,增加的表格内的标签 ...
- 针对httptest4net构建elasticsearch集群压力测试用例
httptest4net是可以自定义HTTP压力测试的工具,用户可以根据自己的情况编写测试用例加载到httptest4net中并运行测试.由于最近需要对elasticsearch搜索集群进行一个不同情 ...
- MongoDB新增及查询数据(一)
新增操作 insert函数会添加一个文档到集合里面.例如我们要登记一个人的信息,首先我们在shell力创建一个局部变量person,其记录了人的姓名和性别,我们通过db.persons.inse ...
- AutoMapper在ABP框架中的使用说明
为了说明AutoMapper如何使用,我专门开设了一个专题来讲,如果您还没有查看该专题,请点击这里.既然系统地学习了AutoMapper,那么接下来就是该用它实战的时候了.今天,我们就来揭开AutoM ...