/**
本文摘自:http://www.cnblogs.com/rob0121/articles/1776298.html* js各种表单数据验证*/ /**************************************************************************************/ /*************************************数字的验证*****************************************/ /**************************************************************************************//*** 检查输入的一串字符是否全部是数字* 输入:str 字符串* 返回:true 或 flase; true表示为数字*/ function checkNum(str){return str.match(/\D/) == null; }/*** 检查输入的一串字符是否为小数* 输入:str 字符串* 返回:true 或 flase; true表示为小数*/ function checkDecimal(str){if (str.match(/^-?\d+(\.\d+)?$/g) == null) {return false;}else {return true;} }/*** 检查输入的一串字符是否为整型数据* 输入:str 字符串* 返回:true 或 flase; true表示为小数*/ function checkInteger(str){if (str.match(/^[-+]?\d*$/) == null) {return false;}else {return true;} }/**************************************************************************************/ /*************************************字符的验证*****************************************/ /**************************************************************************************//*** 检查输入的一串字符是否是字符* 输入:str 字符串* 返回:true 或 flase; true表示为全部为字符 不包含汉字*/ function checkStr(str){if (/[^\x00-\xff]/g.test(str)) {return false;}else {return true;} }/*** 检查输入的一串字符是否包含汉字* 输入:str 字符串* 返回:true 或 flase; true表示包含汉字*/ function checkChinese(str){if (escape(str).indexOf("%u") != -1) {return true;}else {return false;} }/*** 检查输入的邮箱格式是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确*/ function checkEmail(str){if (str.match(/[A-Za-z0-9_-]+[@](\S*)(net|com|cn|org|cc|tv|[0-9]{1,3})(\S*)/g) == null) {return false;}else {return true;} }/*** 检查输入的手机号码格式是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确*/ function checkMobilePhone(str){if (str.match(/^(?:13\d|15[89])-?\d{5}(\d{3}|\*{3})$/) == null) {return false;}else {return true;} }/*** 检查输入的固定电话号码是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确*/ function checkTelephone(str){if (str.match(/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/) == null) {return false;}else {return true;} }/*** 检查QQ的格式是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确*/ function checkQQ(str){if (str.match(/^\d{5,10}$/) == null) {return false;}else {return true;} }/*** 检查输入的身份证号是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确*/ function checkCard(str){//15位数身份证正则表达式var arg1 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;//18位数身份证正则表达式var arg2 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[A-Z])$/;if (str.match(arg1) == null && str.match(arg2) == null) {return false;}else {return true;} }/*** 检查输入的IP地址是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确*/ function checkIP(str){var arg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;if (str.match(arg) == null) {return false;}else {return true;} }/*** 检查输入的URL地址是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确*/ function checkURL(str){if (str.match(/(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/i) == null) {return false}else {return true;} }/*** 检查输入的字符是否具有特殊字符* 输入:str 字符串* 返回:true 或 flase; true表示包含特殊字符* 主要用于注册信息的时候验证*/ function checkQuote(str){var items = new Array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "{", "}", "[", "]", "(", ")");items.push(":", ";", "'", "|", "\\", "<", ">", "?", "/", "<<", ">>", "||", "//");items.push("admin", "administrators", "administrator", "管理员", "系统管理员");items.push("select", "delete", "update", "insert", "create", "drop", "alter", "trancate");str = str.toLowerCase();for (var i = 0; i < items.length; i++) {if (str.indexOf(items[i]) >= 0) {return true;}}return false; }/**************************************************************************************/ /*************************************时间的验证*****************************************/ /**************************************************************************************//*** 检查日期格式是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确* 注意:此处不能验证中文日期格式* 验证短日期(2007-06-05)*/ function checkDate(str){//var value=str.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/);var value = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);if (value == null) {return false;}else {var date = new Date(value[1], value[3] - 1, value[4]);return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4]);} }/*** 检查时间格式是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确* 验证时间(10:57:10)*/ function checkTime(str){var value = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/)if (value == null) {return false;}else {if (value[1] > 24 || value[3] > 60 || value[4] > 60) {return false}else {return true;}} }/*** 检查全日期时间格式是否正确* 输入:str 字符串* 返回:true 或 flase; true表示格式正确* (2007-06-05 10:57:10)*/ function checkFullTime(str){//var value = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/);var value = str.match(/^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1])) (?:(?:[0-2][0-3])|(?:[0-1][0-9])):[0-5][0-9]:[0-5][0-9]$/);if (value == null) {return false;}else {//var date = new Date(checkFullTime[1], checkFullTime[3] - 1, checkFullTime[4], checkFullTime[5], checkFullTime[6], checkFullTime[7]);//return (date.getFullYear() == value[1] && (date.getMonth() + 1) == value[3] && date.getDate() == value[4] && date.getHours() == value[5] && date.getMinutes() == value[6] && date.getSeconds() == value[7]);return true;}}/**************************************************************************************/ /************************************身份证号码的验证*************************************/ /**************************************************************************************//** * 身份证15位编码规则:dddddd yymmdd xx p* dddddd:地区码* yymmdd: 出生年月日* xx: 顺序类编码,无法确定* p: 性别,奇数为男,偶数为女* <p />* 身份证18位编码规则:dddddd yyyymmdd xxx y* dddddd:地区码* yyyymmdd: 出生年月日* xxx:顺序类编码,无法确定,奇数为男,偶数为女* y: 校验码,该位数值可通过前17位计算获得* <p />* 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]* 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]* 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )* i为身份证号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置**/ var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];// 加权因子 var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];// 身份证验证位值.10代表X function IdCardValidate(idCard){idCard = trim(idCard.replace(/ /g, ""));if (idCard.length == 15) {return isValidityBrithBy15IdCard(idCard);}else if (idCard.length == 18) {var a_idCard = idCard.split("");// 得到身份证数组 if (isValidityBrithBy18IdCard(idCard) && isTrueValidateCodeBy18IdCard(a_idCard)) {return true;}else {return false;}}else {return false;} }/** * 判断身份证号码为18位时最后的验证位是否正确* @param a_idCard 身份证号码数组* @return*/ function isTrueValidateCodeBy18IdCard(a_idCard){var sum = 0; // 声明加权求和变量 if (a_idCard[17].toLowerCase() == 'x') {a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作 }for (var i = 0; i < 17; i++) {sum += Wi[i] * a_idCard[i];// 加权求和 }valCodePosition = sum % 11;// 得到验证码所位置 if (a_idCard[17] == ValideCode[valCodePosition]) {return true;}else {return false;} }/** * 通过身份证判断是男是女* @param idCard 15/18位身份证号码* @return 'female'-女、'male'-男*/ function maleOrFemalByIdCard(idCard){idCard = trim(idCard.replace(/ /g, ""));// 对身份证号码做处理。包括字符间有空格。 if (idCard.length == 15) {if (idCard.substring(14, 15) % 2 == 0) {return 'female';}else {return 'male';}}else if (idCard.length == 18) {if (idCard.substring(14, 17) % 2 == 0) {return 'female';}else {return 'male';}}else {return null;} }/** * 验证18位数身份证号码中的生日是否是有效生日* @param idCard 18位书身份证字符串* @return*/ function isValidityBrithBy18IdCard(idCard18){var year = idCard18.substring(6, 10);var month = idCard18.substring(10, 12);var day = idCard18.substring(12, 14);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));// 这里用getFullYear()获取年份,避免千年虫问题 if (temp_date.getFullYear() != parseFloat(year) ||temp_date.getMonth() != parseFloat(month) - 1 ||temp_date.getDate() != parseFloat(day)) {return false;}else {return true;} }/** * 验证15位数身份证号码中的生日是否是有效生日* @param idCard15 15位书身份证字符串* @return*/ function isValidityBrithBy15IdCard(idCard15){var year = idCard15.substring(6, 8);var month = idCard15.substring(8, 10);var day = idCard15.substring(10, 12);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));// 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法 if (temp_date.getYear() != parseFloat(year) ||temp_date.getMonth() != parseFloat(month) - 1 ||temp_date.getDate() != parseFloat(day)) {return false;}else {return true;} }//去掉字符串头尾空格 function trim(str){return str.replace(/(^\s*)|(\s*$)/g, ""); }
js验证函数摘录
转载于:https://www.cnblogs.com/shy1766IT/p/4869659.html
相关文章:

React for循环渲染组件
通常你需要在一个组件中渲染列表。或者循环遍历渲染相同的多个组件,下面看看怎么实现: render() {const options = this.state.data.map(d => <Option key={d.value}>{d.text}</Option>);return (<SelectshowSearchvalue={this.state.value}placeholder={t…

让电脑的灵魂跟你走
想必我这个题目一出来,大家就知道我想写的是电脑远程控制了。 电脑远程控制是为了方便人们随时随地访问自己的电脑,从而进行更加灵活高效的工作。最常见的远程控制是我们利用客户端直接进入后台操作命令行界面。也就是终端shell。 电影里面,黑…

您尝试打开的文件_您是否尝试过重新打开软件团队的身份?
您尝试打开的文件by Victoriya Kalmanovich由Victoriya Kalmanovich 您是否尝试过重新打开软件团队的身份? (Have you tried turning your software team’s identity off and on again?) This series portrays my experience as an R&D group leader of a gr…

vijos 1006 晴天小猪历险记之Hill——数字三角形的终极变化
题目链接:https://vijos.org/p/1006 数字三角形原题看这里:http://www.cnblogs.com/huashanqingzhu/p/7326837.html 背景 在很久很久以前,有一个动物村庄,那里是猪的乐园(^_^),村民们勤劳、勇敢…

电磁学讲义6:高斯定理计算电场
高斯定理是电场力平方反比定律和线性叠加原理的直接结果。也可以由高斯定理作为基本规律导出库仑定律。这说明高斯定理和库仑定律是不同形式的表示电荷和电场关系的同一规律。库仑定律可以使我们从电荷分布求出电场分布,高斯定理可以使我们从电场分布求出电荷分布。…

ant table表格整行点击事件并获取当前行的数据
实现效果:点击表格中某一行,或者点击表格中某一行的一个字段,获取当前行的 item 下标数据,并用 Link 标签传参,下一个页面接收的实现。 如果使用 router 跳转路由传参,需要导入 import router from umi/router; 如果用 Link 跳转路由传参,需要导入 import Link from u…

以太坊公链私链_如何使用以太坊构建汽车制造供应链系统
以太坊公链私链by Marcelo Russi Mergulho由Marcelo RussiMergulho 如何使用以太坊构建汽车制造供应链系统 (How to build a car manufacturing supply chain system using Ethereum) Here at Daitan we are always looking for new technologies that can help our clients s…

微信一次性订阅消息
微信一次性订阅消息官方文档:消息管理>发送一次性订阅消息 开发者可以通过一次性订阅消息授权让微信用户授权第三方移动应用(接入说明)或公众号,获得发送一次订阅消息给到授权微信用户的机会。授权微信用户可以不需要关注公众号…

react控制组件的显示或隐藏, 根据state判断元素显示隐藏 , setState不实时生效解决方法
代码实现功能:根据 state 中的值判断子组件显示或隐藏,因为 setState 不是及时生效的,所以不做显示隐藏判断会报错。 render() {// 客户经理循环组件function CommentSpan(props){const numbers props.managers;if(!numbers) return;const l…

关于R语言plyr包的安装问题
平时安装R包都是从Rstudio中进行的,今天在装plyr包的时候,Rstudio一直报错,示例如下: 是不是很无语啊,搞了半天不知所以然,然后突发奇想从Rgui中安装试下,没想到轻轻松松就成功了,示…

regexp 好汉字符串_如何在JavaScript中使用RegExp确认字符串的结尾
regexp 好汉字符串by Catherine Vassant (aka Codingk8)由凯瑟琳瓦森(Catherine Vassant)(又名Codingk8) 如何在JavaScript中使用RegExp确认字符串的结尾 (How to use a RegExp to confirm the ending of a String in JavaScript) Using the Regexp ?️ constructor使用Regex…

【转】浅谈分布式锁
前言 随着互联网技术的不断发展,数据量的不断增加,业务逻辑日趋复杂,在这种背景下,传统的集中式系统已经无法满足我们的业务需求,分布式系统被应用在更多的场景,而在分布式系统中访问共享资源就需要一种互斥…

php中的抽象类(abstract class)和接口(interface)
一、 抽象类abstract class 1 .抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类。 2 .抽象类不能被直接实例化。抽象类中只定义(或部分实现࿰…

React 父组件给子组件传值,子组件接收
父组件传值代码: render() {return (<div>{this.state.list?(<GeomLine list{this.state.list}/>):null}</div>);} 子组件接收代码: class GeomLine extends Component {// 在组件接收到一个新的 prop (更新后)时被调用。这个方法在…

unity 灯笼_如何创建将自己拼成文字的漂亮灯笼
unity 灯笼In this tutorial, we will go through how to create a group of festival lanterns that arrange themselves into the words you choose. An online demo can be found here.在本教程中,我们将介绍如何创建一组节日灯笼,这些灯笼将自己布置…

Android PackageManager packages.xml文件格式
packages.xml文件存放在/data/system目录下 该文件记录了系统中所有应用程序的包管理相关信息 PmS根据该文件进行包管理的各种操作 标签名称所包含的值举例last-platform-versioninternal"17" external"17"<permission-trees />暂时不使用<…

tplink wr886n v5.0 ttl 接线方法
我的倒是有ttl信息,但是全是乱码,换过RX和TX,也换过串口速率都没用,附上TTL接线图.2016-11-02今天晚上终于搞定了ttl了,步骤如下:1.先将串口波特率改为117500(推荐使用Putty).如果可以了就不用第二步了2.将usb转ttl转接板上的rx和tx的指示灯干掉,可以留下电源指示灯详细教程见s…

React子组件给父组件传值, 父组件引用子组件并给子组件传值
本博客代码是 React 父组件和子组件相互传值的 demo;实现封装一个折线图,折线图选择下拉框,获取下拉框点击的值并且传给父组件根据下拉框筛选的条件更新视图;效果图如下: 父组件代码: 代码解析:父组件 Parent 引用子组件 Sub ,传递了 list 组件给子组件,并且接收子组件…

我如何使用深度学习通过Fast.ai对医学图像进行分类
by James Dietle詹姆斯迪特尔(James Dietle) Convolutional Neural Networks (CNNs) have rapidly advanced the last two years helping with medical image classification. How can we, even as hobbyists, take these recent advances and apply them to new datasets? W…

Java——基础
1.数据类型 int,short,byte,long double,float char,String 2.变量 int var; var 12; int var1 12;final int v1 0; //常量 C/C变量的声明和定义是分开的,JAVA不区分。 //c/c extern int a; //声明 …

Gradle系列教程之依赖管理
这一章我将介绍Gradle对依赖管理的强大支持,学习依赖分组和定位不同类型仓库。依赖管理看起来很容易,但是当出现依赖解析冲突时就会很棘手,复杂的依赖关系可能导致构建中依赖一个库的多个版本。Gradle通过分析依赖树得到依赖报告,…

Ant Design Pro 登录流程以及路由权限设置
登录流程: 1.ant 框架最外层套了 SecurityLayout 布局 SecurityLayout 中判断用户是否登录,做自动跳转路由处理。 里面的 currentUser 和 currentUser.userid 很关键,是判断登录状态的值. 2.currentUser 是通过 src/models/user 中 fetchCurrent 绑定 type saveCurrentUs…

初级开发人员的缺点_这是我想放弃初级开发人员时所做的事情
初级开发人员的缺点Coding is hard. Really hard. There are times when you’ll think “this is amazing! I love this!”编码很难。 真的很难。 有时您会认为“这太神奇了! 我喜欢这个!” But you’ll also have the not so amazing times. The time…

C#之 HashSet(临时笔记,未参考资料,请慎重)
HashSet是一个集合,类似于DataSet,但是其主要用途是用来存放同一种类型的元素(string、row、table等),如果添加的元素跟定义时初始的类型不一致,就会直接编译失败。 例如: HashSet<string> hsnew Has…

Ant Design of React从入门到开发教程
Ant Design Pro 是一个企业级中后台前端/设计解决方案。 目录: 一:开发前的准备 二:创建页面 三:创建组件并引用 四:封装网络请求和网络请求走向 五:登录流程以及路由权限设置 六:父组件和子组件相互传值和接收 七:for 循环渲染组件 Ant Design Pro 全家桶技术…

适合初学者的数据结构_数据结构101:数组-初学者的直观介绍
适合初学者的数据结构了解您每天使用的数据结构。 (Get to know the data structures that you use every day. ) Welcome! Let’s Start with some Vital Context. Let me ask you this: ✅ Do you listen to music on your smartphone?✅ Do you keep a list of contacts on…

少侠,找个千手观音来帮你营销可好?
亚历山大公司营销主管老张最近有点儿烦,不是因为老婆更年期、女儿叛逆期,而是工作遇到了些麻烦。 社交营销很火,老张自认为公司始终游走在新科技最前沿,当然在第一时间就开通了微信、微博、QQ……各种社交网络的一大堆账号&#x…

Upload上传图片
实现antd上传图片,Upload 组件可以上传多张图片,多张图片上传成功的效果图: 每次上传 onChange 回调函数都会执行一次并且里面接收一个JSON对象,其中 file 对象是本次上传的图片信息,status 值为 done 就表示这一次上传成功了,fileList 中是一个数组,里面是组件所有上传…

将html中的代码拷贝到jsp后出现的问题 Failed to create the part's controls
Failed to create the parts controls 解决方法: 在文件上右键:open with转载于:https://www.cnblogs.com/flyoung/p/4885921.html

面试官问你想找什么工作_找工作时如何面试面试官
面试官问你想找什么工作在技术面试中要问的十二个问题 (Twelve questions to ask at tech interviews) I’ve just come off six weeks’ of interviewing for medior software developer roles, in a market that is desperate for talent (Amsterdam). That means I went…