javascript实现检验的各种规则


Posted in Javascript onJuly 31, 2015

本文实例讲述了javascript实现检验的各种规则。分享给大家供大家参考。具体如下:

/**
 * 检验各种规则
 * @param str 检验的内容
 * @param cType 预设的检验规则 字符串[
 *       empty,  检验是否为空
 *       telphone, 座机手机号码
 *       allphone, 所有手机号码
 *       ydphone, 移动手机号码
 *       ltphone, 联通手机号码
 *       dxphone, 电信手机号码
 *       email,  邮箱
 *       url,  网址
 *       cn,   汉字
 *       image,  图片格式
 *       emscode, 邮政编码
 *       isEmpty, 检查是否为空
 *       isint,  整数
 *       isfloat, 判断是否为正小数
 *       isnumber, 判断为实数
 *       words,  判断是否为英文字母
 *       wordsAndNum,   判断是否为字母+数字
 *       wordsAndNumAndDownline, 判断是否由数字、26个英文字母或者下划线组成的字符串
 *       qq,      QQ检验
 *       personCard18,   身份证18位
 *       personCard15,   身份证15位
 *       ]
 * @param regex 自定义表达式 传入格式例如:"^\-?[1-9]+\d*$"
 *
 * @description cType 与 regex 只能有一个为空
 *    如 checkObjectByRegex("测试中文", "cn"); // 判断中文
 *    如 checkObjectByRegex("测试中文", null, "^[\u4e00-\u9fa5]+$"); // 自定义表达式正则
 * @return {boolean}
 */
function checkObjectByRegex(str, cType, regex) {
 /**
  * 定义验证各种格式类型的正则表达式对象
  */
 var Regexs = {
  telphone: (/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/), //座机手机号码
  allphone: (/^((13[0-9])|(14[57])|(15[0-9])|(17[678])|(18[0-9]))[0-9]{8}$/),   //所有手机号码
  ydphone: (/^((13[4-9])|(15[012789])|147|178|(18[23478]))[0-9]{8}$/),   //移动手机号码
  ltphone: (/^((13[0-2])|(145)|(15[56])|(176)|(18[56]))[0-9]{8}$/),     //联通手机号码
  dxphone: (/^((133)|(153)|(177)|(180)|(181)|(189))[0-9]{8}$/),    //电信手机号码
  email: (/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/),//邮箱
  url: (/(?:https|http|ftp|rtsp|mms):\/\/.+\/[\w]+\.[\w]+/),     //网址
  cn: (/^[\u4e00-\u9fa5]+$/i), //汉字
  image: (/\.jpg$|\.jpeg$|\.png$/i), //图片格式
  emscode: (/^[1-9]\d{5}$/), //邮政编码
  isint: (/^(\-)?[1-9]+\d*$/), //整数
  isfloat: (/^[0-9]+\.?[0-9]*$/), //判断是否为正小数
  isnumber: (/^[-\+]?\d+(\.\d+)?$/), //判断为实数
  words: (/^[A-Za-z]+$/), //判断是否为英文字母
  wordsAndNum: (/^[A-Za-z0-9]+$/), //判断是否为字母+数字
  wordsAndNumAndDownline: (/^\w+$/), //判断是否由数字、26个英文字母或者下划线组成的字符串
  qq: (/^[1-9]\d{4,11}$/), //QQ
  personCard18: (/^(\d{6})()?(\d{4})(\d{2})(\d{2})(\d{3})(\d|X)$/), //身份证18位
  personCard15: (/^(\d{6})()?(\d{2})(\d{2})(\d{2})(\d{3})$/) //身份证15位
 };
 var nReg;
 if (str == null || typeof(str) == "undefined") {
  str = "";
 }
 if (cType != null && typeof(cType) != "undefined") {
  if (cType == "isEmpty") {
   str = $.trim(str);
   if (str != null && typeof(str) != "undefined" && str != "") {
    return false;
   } else return true;
  }
  nReg = Regexs[cType];
  if (str == null || str == "") return false; //输入为空,认为是验证通过
  // 针对 18位身份证单独处理
  if (cType == 'personCard18') {
   var ary = str.match(Regexs[cType]);
   if (!(parseInt(ary[3]) >= 1900)) return false;
   var D = new Date(ary[3] + "/" + ary[4] + "/" + ary[5]);
   var isTrue = D.getFullYear() == ary[3] && (D.getMonth() + 1) == ary[4] && D.getDate() == ary[5];
   return isTrue;
  }
  // 针对 15位身份证单独处理
  if (cType == 'personCard15') {
   var ary = str.match(Regexs[cType]);
   var D = new Date("19" + ary[3] + "/" + ary[4] + "/" + ary[5]);
   var isTrue = D.getYear() == ary[3] && (D.getMonth() + 1) == ary[4] && D.getDate() == ary[5];
   return isTrue;
  }
 } else {
  // 自定义正则表达式处理
  if (regex != null && typeof(regex) != "undefined") {
   nReg = new RegExp(regex);
  } else {
   return false;
  }
 }
 return nReg.test(str);
}

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
js网页侧边随页面滚动广告效果实现
Apr 14 Javascript
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
Jan 23 Javascript
关于vue.extend和vue.component的区别浅析
Aug 16 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
Sep 18 Javascript
微信小程序wx.request实现后台数据交互功能分析
Nov 25 Javascript
bootstrap+jquery项目引入文件报错的解决方法
Jan 22 jQuery
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 Javascript
vuex实现的简单购物车功能示例
Feb 13 Javascript
微信小程序获取地理位置及经纬度授权代码实例
Sep 18 Javascript
小程序api实现promise封装过程解析
Nov 21 Javascript
纯JS实现本地图片预览的方法
Jul 31 #Javascript
javascript动画算法实例分析
Jul 31 #Javascript
jquery实现手机号码选号的方法
Jul 31 #Javascript
javascript文本模板用法实例
Jul 31 #Javascript
Javascript实现网络监测的方法
Jul 31 #Javascript
jquery模拟alert的弹窗插件
Jul 31 #Javascript
JSON字符串转JSON对象
Jul 31 #Javascript
You might like
php获得文件扩展名三法
2006/11/25 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
javascript 词法作用域和闭包分析说明
2010/08/12 Javascript
jquery 淡入淡出效果的简单实现
2014/02/07 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
Windows系统中安装nodejs图文教程
2015/02/28 NodeJs
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
js省市县三级联动效果实例
2020/04/15 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
纯JavaScript手写图片轮播代码
2016/10/20 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
2017/06/16 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
Vue2.x和Vue3.x的双向绑定原理详解
2020/11/05 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
Python中unittest用法实例
2014/09/25 Python
用Python实现随机森林算法的示例
2017/08/24 Python
python MySQLdb使用教程详解
2018/03/20 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
Linux如何压缩可执行文件
2014/03/27 面试题
网络编辑职责
2014/03/01 职场文书
护士求职自荐信范文
2014/03/19 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
党员十八大心得体会
2014/09/12 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
2015年医务人员医德医风自我评价
2015/03/03 职场文书
复试通知单模板
2015/04/24 职场文书
创业计划书之家教中心
2019/09/25 职场文书
alibaba seata服务端具体实现
2022/02/24 Java/Android
vue中div禁止点击事件的实现
2022/04/02 Vue.js