当前位置: 首页 > news >正文

自己编写的一个Javascript正则表达式对象

这个对象很简陋,仅仅是为了判断制作的一个类,顺便的作用就是搜集正则表达式,方便整理!

代码:

  1 /**
  2  * [reg description]
  3  * ①判断是否是空值 -----> noinput 是空,返回false
  4  * ②js常用正则表达式 ------> regex 
  5  * @type {Object}
  6  * @author  Zell Dintch
  7  * mktime   2014/8/22   22:31
  8  */
  9 var reg = {
 10     "noinput": function (v, jqObj, msg) {
 11     //v是要检验的值,jqObj是Jquery选择器对象(错误提示出现的地方),提示的文本
 12         if (v=='') {
 13             jqObj.css({'color':'red','font-weight':'normal'}).html(" "+msg.err);
 14             return false;
 15         } else {
 16             jqObj.css({'color':'grey','font-weight':'normal'}).html("");
 17         }
 18     },
 19     "trim2": function (v) {
 20         //v是文本框的值
 21         return v.replace(/(^\s*)|(\s*$)/g, "");
 22     },
 23     "trim":function (str) {
 24         return str.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, '');
 25     },
 26     //精确验证是否是身份证号
 27     "isIDCard": function (idCard) {
 28         var ret=false;
 29         var w=[7 , 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9 , 10, 5 ,8 , 4, 2];            
 30            if( idCard.length == 18 ){
 31         //身份证号码长度必须为18,只要校验位正确就算合法
 32         var crc=idCard.substring(17);
 33         var a = new Array();
 34         var sum = 0;
 35         for(var i=0;i<17;i++){
 36             a.push(idCard.substring(i,i+1));
 37             sum += parseInt(a[i],10)*parseInt(w[i], 10);
 38             //alert(a[i]);
 39         }
 40         sum %= 11;
 41         var res= "-1";
 42         switch (sum) {
 43             case 0:{
 44                 res="1";
 45                 break;
 46             }
 47             case 1:{
 48                 res="0";
 49                 break;
 50             }
 51             case 2:{
 52                 res="X";
 53                 break;
 54             }
 55             case 3:{
 56                 res="9";
 57                 break;
 58             }
 59             case 4:{
 60                 res="8";
 61                 break;
 62             }
 63             case 5:{
 64                 res="7";
 65                 break;
 66             }
 67             case 6:{
 68                 res="6";
 69                 break;
 70             } 
 71             case 7:{
 72                 res="5";
 73                 break;
 74             } 
 75             case 8:{
 76                 res="4";
 77                 break;
 78             } 
 79             case 9:{
 80                 res="3";
 81                 break;
 82             }
 83             case 10:{
 84                 res="2";
 85                 break;
 86             }
 87         }
 88         if( crc.toLowerCase() == res.toLowerCase() ){
 89                  ret=true; 
 90               }
 91               //ret=true; 
 92            } else if (idCard.length == 15){
 93             //15位的身份证号,只验证是否全为数字
 94             var pattern = /^\d{15}$/;
 95             ret = pattern.test(idCard);
 96             return ret;
 97            }
 98           return ret;
 99     },
100     "chkPwdLevel": function (v) {
101         //检测密码强度---仿新浪网密码强度
102         /*
103             规则如下:6-16位字符(字母、数字、符号),区分大小写
104                 ①数字的情况下:
105                     6位数字:密码强度较弱,请重新输入
106                     7-9位数字:弱:试试字母、数字和标点混合
107                     10-16位数字:中:试试字母、数字和标点混合
108                 ②字母情况下:
109                     6-9位字母:弱:试试字母、数字和标点混合
110                     10-16位字母:中:试试字母、数字和标点混合
111                 ③符号情况下:
112                     6-9位符号:弱:试试字母、数字和标点混合
113                     10-16位符号:中:试试字母、数字和标点混合
114                 ④有空格:
115                     密码不能包含空格符
116                 ⑤有全角符号:
117                     不支持特殊符号
118                 ⑥留空:
119                     请输入登录密码
120                 ⑦密码小于5位:
121                     密码较短,最短支持6个字符
122                 ⑧密码大于16位:
123                     密码最长支持16位字符
124                 6-9位:字母、数字、符号中含任意2种或3种组合
125                     中:试试字母、数字和标点混合
126                 10-16位:字母、数字、符号中任意2种或3种组合
127                     强:请牢记您的密码
128                 4种组合:(大小写字母、数字、符号4种组合),无论位数
129                     强:请牢记您的密码
130          */
131         var vw=0,w=1,m=2,s=3;//w---weak,m---medium,s---strong
132         var m1 = "密码强度较弱,请重新输入",
133         m2 = "<span style='color:red'>弱</span>:试试字母、数字和标点混合",
134         m3 = "<span style='color:orange'>中</span>:试试字母、数字和标点混合",
135         m5 = "密码长度错误,支持长度为6-16位字符",
136         m6 = "密码中含不支持的(全角)特殊符号",
137         m4 = "<span style='color:green'>强</span>:请牢记您的密码";//msg
138         var _res = {};
139         var len = v.length;
140         var word1 = /^[a-z]+$/,
141         word2 = /^[A-Z]+$/,
142         number = /^[0-9]+$/,
143         symbol = /^[\,\.\/\<\>\?\;\'\:\"\[\]\{\}\\\|\=\-\+\_\)\(\*\&\^\%\$\#\@\!\~\`]+$/;
144         var n = number.test(v),
145         wo1 = word1.test(v),
146         wo2 = word2.test(v),
147         sy = symbol.test(v);
148         //两两组合
149         var n_wo1 = /^[0-9a-z]+$/,
150         n_wo1Reg = n_wo1.test(v),
151         n_wo2 = /^[0-9A-Z]+$/,
152         n_wo2Reg = n_wo2.test(v),
153         n_sy = /^[0-9\,\.\/\<\>\?\;\'\:\"\[\]\{\}\\\|\=\-\+\_\)\(\*\&\^\%\$\#\@\!\~\`]$/,
154         n_syReg = n_sy.test(v),
155         wo1_wo2 = /^[a-zA-Z]+$/,
156         wo1_wo2Reg = wo1_wo2.test(v),
157         wo1_sy = /^[a-z\,\.\/\<\>\?\;\'\:\"\[\]\{\}\\\|\=\-\+\_\)\(\*\&\^\%\$\#\@\!\~\`]$/,
158         wo1_syReg = wo1_sy.test(v),
159         wo2_sy = /^[A-Z\,\.\/\<\>\?\;\'\:\"\[\]\{\}\\\|\=\-\+\_\)\(\*\&\^\%\$\#\@\!\~\`]$/,
160         wo2_syReg = wo2_sy.test(v);
161         //三类组合
162         var n_wo1_wo2 = /^[0-9a-zA-Z]+$/,
163         n_wo1_wo2Reg = n_wo1_wo2.test(v),
164         n_wo1_sy = /^[0-9a-z\,\.\/\<\>\?\;\'\:\"\[\]\{\}\\\|\=\-\+\_\)\(\*\&\^\%\$\#\@\!\~\`]+$/,
165         n_wo1_syReg = n_wo1_sy.test(v),
166         n_wo2_sy = /^[0-9A-Z\,\.\/\<\>\?\;\'\:\"\[\]\{\}\\\|\=\-\+\_\)\(\*\&\^\%\$\#\@\!\~\`]+$/,
167         n_wo2_syReg = n_wo2_sy.test(v),
168         n_wo1_wo2_sy = /^[a-zA-Z0-9\,\.\/\<\>\?\;\'\:\"\[\]\{\}\\\|\=\-\+\_\)\(\*\&\^\%\$\#\@\!\~\`]+$/,
169         n_wo1_wo2_syReg = n_wo1_wo2_sy.test(v);
170         //全角符号
171         var full_sy = /[a-z0-9,./;'[]=-)(*&^%$#@!~`_++{}":?><。、》《”‘\|]/,
172         full_syReg = full_sy.test(v);
173         if (len<6 || len>16) {
174             return _res = {"level":vw, 'msg': m5};
175         } else {
176             if (len >=6 && len<=9) {
177                 //单一组合
178                 if (len == 6 && (n || wo1 || wo2)) {//6位数字
179                     return _res = {"level":0, "msg": m1};
180                 } else if (n || wo1 || wo2 || sy) {//7-9位数字
181                     return _res = {"level":w, "msg": m2};
182                 }
183                 //多组合
184                 if (n_wo1Reg || n_wo2Reg || n_syReg || wo1_wo2Reg || wo1_syReg || wo2_syReg) {
185                     return _res = {"level":m, "msg": m3};
186                 }
187                 if (n_wo1_wo2Reg || n_wo1_syReg || n_wo2_syReg) {
188                     return _res = {"level":m, "msg": m3};
189                 }
190                 //终极组合
191                 if (n_wo1_wo2_syReg) {
192                     return _res = {"level":s, "msg": m4};
193                 }
194                 //全角
195                 if (full_syReg) {
196                     return _res = {"level":vw, "msg": m6};
197                 }
198             } else if (len>=10 && len<=16) {
199                 if (n || wo1 || wo2 || sy) {
200                     return _res = {"level":m, "msg": m3};
201                 }
202                 //多组合
203                 if (n_wo1Reg || n_wo2Reg || n_syReg || wo1_wo2Reg || wo1_syReg || wo2_syReg) {
204                     return _res = {"level":s, "msg": m4};
205                 }
206                 if (n_wo1_wo2Reg || n_wo1_syReg || n_wo2_syReg) {
207                     return _res = {"level":s, "msg": m4};
208                 }
209                 //终极组合
210                 if (n_wo1_wo2_syReg) {
211                     return _res = {"level":s, "msg": m4};
212                 }
213                 //全角
214                 if (full_syReg) {
215                     return _res = {"level":vw, "msg": m6};
216                 }
217             }
218         }
219     },
220     "regex": {
221         //整数或者含2位小数,小数是2位
222         "NF": /^[0-9]+\.{0,1}[0-9]{0,2}$/,
223         //简单粗暴的身份证号
224         "IDCard" : /^\d{15}|\d{18}$/,
225         //形如: xxx-xxxxxxxx-xxx的电话号码
226         "phone": /^(([0\+]\d{2,3}-)?(0\d{2,3})-)?(\d{7,8})(-(\d{3,}))?$/,
227         //常用11位手机号码
228         "tel": /^(?:13[0-9]|15[012356789]|18[0236789]|14[57])[0-9]{8}$/,
229         //邮箱
230         "email": /^[0-9a-zA-Z]+([\._\-][0-9a-zA-Z]+)*@[0-9a-zA-Z_\-]+(\.[0-9a-zA-Z_\-]+)+$/,
231         //汉字、字母、数字或下划线或中横线
232         "nickname": /^[a-zA-Z0-9\_\-\u4e00-\u9fa5]+$/,
233         //只能输入汉字
234         "CC": /^[\u4e00-\u9fa5]+$/,
235         //用户名(4-30位字母开头的字符,支持数字、字母或下划线)
236         "username": /^[a-zA-Z]\w{3,29}$/,
237         //只能输入非零的正整数
238         "pInt": /^[1-9][0-9]*$/,
239         //有2位小数的正实数 -- 形如: 123.11 23.22 345.33 
240         "prNum": /^\+?[0-9]+\.\d{2}$/,
241         //同上,但可以取整数 -- 形如: 123 123.11 1234.45 
242         "prNum2": /^\+?[0-9]+\.\d{2}$/,
243         //只能输入0和非0开头的正整数
244         "pIntAndZero": /^(0|[1-9][0-9]*)$/,
245         //整数
246         "int": /^\d+$/,
247         //匹配小数或者整数
248         "floatOrInt": /^\d+(?:\.\d+)?$/,
249         //匹配小数
250         "floatN": /^(?:\d+\.\d+)$/
251     },
252 }

转载请注明出处!

 

转载于:https://www.cnblogs.com/Zell-Dinch/articles/3930353.html

相关文章:

  • 几张关于IT业人才成长的统计图片
  • POJ 2029
  • sed命令教程
  • jquery版本
  • 【M19】了解临时对象的来源
  • NSTimer的详细用法
  • Windows下安装Scrapy方法及常见安装问题总结——Scrapy安装教程
  • c# Winform上传文件
  • Codeforces Round #532 (Div. 2)
  • Ubuntu 图形处理软件
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 创建Windows服务简单流程
  • Airflow成为Apache软件基金会的顶级项目
  • BZOJ 3039: 玉蟾宫
  • JSP学习笔记(一)
  • conda常用的命令
  • exports和module.exports
  • Idea+maven+scala构建包并在spark on yarn 运行
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • java中具有继承关系的类及其对象初始化顺序
  • Laravel Telescope:优雅的应用调试工具
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • 力扣(LeetCode)357
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 实现菜单下拉伸展折叠效果demo
  • 使用 QuickBI 搭建酷炫可视化分析
  • 微信开源mars源码分析1—上层samples分析
  • 用jquery写贪吃蛇
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • $GOPATH/go.mod exists but should not goland
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (70min)字节暑假实习二面(已挂)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (pytorch进阶之路)扩散概率模型
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (数据结构)顺序表的定义
  • (转)甲方乙方——赵民谈找工作
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • ***监测系统的构建(chkrootkit )
  • **python多态
  • .bat批处理出现中文乱码的情况
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Core、DNX、DNU、DNVM、MVC6学习资料
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .NET面试题(二)
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式