自己编写的一个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 }
转载请注明出处!
---- 始终相信这句:
----“做每天该做的事,不计结果!”
---- 因爲對於編程還只是新手,對很多知識掌握的不牢靠,歡迎大家批評指正~~|=-=|~~
----“做每天该做的事,不计结果!”
---- 因爲對於編程還只是新手,對很多知識掌握的不牢靠,歡迎大家批評指正~~|=-=|~~