var _____WB$wombat$assign$function_____ = function(name) {return (self._wb_wombat && self._wb_wombat.local_init && self._wb_wombat.local_init(name)) || self[name]; }; if (!self.__WB_pmw) { self.__WB_pmw = function(obj) { this.__WB_source = obj; return this; } } { let window = _____WB$wombat$assign$function_____("window"); let self = _____WB$wombat$assign$function_____("self"); let document = _____WB$wombat$assign$function_____("document"); let location = _____WB$wombat$assign$function_____("location"); let top = _____WB$wombat$assign$function_____("top"); let parent = _____WB$wombat$assign$function_____("parent"); let frames = _____WB$wombat$assign$function_____("frames"); let opener = _____WB$wombat$assign$function_____("opener"); var regexEnum = { intege: "^-?[1-9]\\d*$", //整数 intege1: "^[1-9]\\d*$", //正整数 intege2: "^-[1-9]\\d*$", //负整数 num: "^([+-]?)\\d*\\.?\\d+$", //数字 num1: "^[1-9]\\d*|0$", //正数(正整数 + 0) num2: "^-[1-9]\\d*|0$", //负数(负整数 + 0) decmal: "^([+-]?)\\d*\\.\\d+$", //浮点数 decmal1: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*$",   //正浮点数 decmal2: "^-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*)$",  //负浮点数 decmal3: "^-?([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0)$",  //浮点数 decmal4: "^[1-9]\\d*.\\d*|0.\\d*[1-9]\\d*|0?.0+|0$",   //非负浮点数(正浮点数 + 0) decmal5: "^(-([1-9]\\d*.\\d*|0.\\d*[1-9]\\d*))|0?.0+|0$",  //非正浮点数(负浮点数 + 0) email: "^\\w+((-\\w+)|(\\.\\w+))*\\@[A-Za-z0-9]+((\\.|-)[A-Za-z0-9]+)*\\.[A-Za-z0-9]+$", //邮件 color: "^[a-fA-F0-9]{6}$", //颜色 url: "^http[s]?:\\/\\/([\\w-]+\\.)+[\\w-]+([\\w-./?%&=]*)?$", //url chinese: "^[\\u4E00-\\u9FA5\\uF900-\\uFA2D]+$", //仅中文 ascii: "^[\\x00-\\xFF]+$", //仅ACSII字符 zipcode: "^\\d{6}$", //邮编 //mobile: "^13[0-9]{9}|15[012356789][0-9]{8}|18[0256789][0-9]{8}|147[0-9]{8}$", //手机 mobile: "^1[0-9]{10}$", //由于手机号码段会有新的,所以判断1开头,11位就可以了. ip4: "^(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]\\d{2}|[1-9]?\\d)$", //ip地址 notempty: "^\\S+$", //非空 picture: "(.*)\\.(jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga)$", //图片 rar: "(.*)\\.(rar|zip|7zip|tgz)$", //压缩文件 date: "^\\d{4}(\\-|\\/|\.)\\d{1,2}\\1\\d{1,2}$", //日期 qq: "^[1-9]*[1-9][0-9]*$", //QQ号码 tel: "^(([0\\+]\\d{2,3}-)?(0\\d{2,3})-)?(\\d{7,8})(-(\\d{3,}))?$", //电话号码的函数(包括验证国内区号,国际区号,分机号) username: "^\\w+$", //用来用户注册。匹配由数字、26个英文字母或者下划线组成的字符串 letter: "^[A-Za-z]+$", //字母 letter_u: "^[A-Z]+$", //大写字母 letter_l: "^[a-z]+$", //小写字母 idcard: "^[1-9]([0-9]{14}|[0-9]{17})$" //身份证 } var aCity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外" } function isCardID(sId) { var iSum = 0; var info = ""; if (!/^\d{17}(\d|x)$/i.test(sId)) return "你输入的身份证长度或格式错误"; sId = sId.replace(/x$/i, "a"); if (aCity[parseInt(sId.substr(0, 2))] == null) return "你的身份证地区非法"; sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2)); var d = new Date(sBirthday.replace(/-/g, "/")); if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return "身份证上的出生日期非法"; for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11); if (iSum % 11 != 1) return "你输入的身份证号非法"; return true;//aCity[parseInt(sId.substr(0,2))]+","+sBirthday+","+(sId.substr(16,1)%2?"男":"女") } //短时间,形如 (13:04:06) function isTime(str) { var a = str.match(/^(\d{1,2})(:)?(\d{1,2})\2(\d{1,2})$/); if (a == null) { return false } if (a[1] > 24 || a[3] > 60 || a[4] > 60) { return false; } return true; } //短日期,形如 (2003-12-05) function isDate(str) { var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/); if (r == null) return false; var d = new Date(r[1], r[3] - 1, r[4]); return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4]); } //长时间,形如 (2003-12-05 13:04:06) function isDateTime(str) { var reg = /^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/; var r = str.match(reg); if (r == null) return false; var d = new Date(r[1], r[3] - 1, r[4], r[5], r[6], r[7]); return (d.getFullYear() == r[1] && (d.getMonth() + 1) == r[3] && d.getDate() == r[4] && d.getHours() == r[5] && d.getMinutes() == r[6] && d.getSeconds() == r[7]); } //是否为连续字符 function isContinuousChar(str) { var str = str.toLowerCase(); var flag = 0; for (var i = 0; i < str.length; i++) { if (str.charCodeAt(i) != flag + 1 && flag != 0) return false; else flag = str.charCodeAt(i); } return true; } //是否字符都相同 function isSameChar(str) { var str = str.toLowerCase(); var flag = 0; for (var i = 0; i < str.length; i++) { if (str.charCodeAt(i) != flag && flag != 0) return false; else flag = str.charCodeAt(i); } return true; } //获取密码强度级别 function passwordStrengthLevel(pwd) { var passwordStrengthText = ['密码强度:弱', '密码强度:中', '密码强度:强'] //密码强度校验规则(flag=1(数字)+2(小写)+4(大写)+8(特殊字符)的组合,value里的0表示跟密码一样长,1表示起码1个长度) var passwordStrengthRule = [ { level: 1, rule: [ { flag: 1, value: [0] }, //数字 { flag: 2, value: [0] }, //小写字符 { flag: 4, value: [0] } //大写字符 ] }, { level: 2, rule: [ { flag: 8, value: [0] }, //特符 { flag: 9, value: [1, 1] }, //数字(>=1)+特符>=1) { flag: 10, value: [1, 1] }, //小写(>=1)+特符>=1) { flag: 12, value: [1, 1] }, //大写(>=1)+特符>=1) { flag: 3, value: [1, 1] }, //数字(>=1)+小写(>=1) { flag: 5, value: [1, 1] }, //数字(>=1)+大写(>=1) { flag: 6, value: [1, 1] } //小写(>=1)+大写(>=1) ] }, { level: 3, rule: [ { flag: 11, value: [1, 1, 1] }, //数字(>=1)+小写(>=1)+特符(>=1) { flag: 13, value: [1, 1, 1] }, //数字(>=1)+大写(>=1)+特符(>=1) { flag: 14, value: [1, 1, 1] }, //小写(>=1)+大写(>=1)+特符(>=1) { flag: 7, value: [1, 1, 1] } //数字(>=1)+小写(>=1)+大写(>=1) ] } ]; //获取标记所在的位置,用1表示 function getFlag(val, sum, index) { if (sum == undefined) { sum = [0, 0, 0, 0] } if (index == undefined) { index = -1 }; index++; sum[index] = val % 2; val = Math.floor(val / 2); if (val == 1 || val == 0) { sum[index + 1] = val; return sum } sum = getFlag(val, sum, index); return sum; } //var pwd = _obj.selector.val(); //判断密码各个位置的组成情况 if (pwd == "") { return 0 }; //if (setting.onErrorContinueChar != "" && isContinuousChar(pwd)) { // return -1 //}; //if (setting.onErrorSameChar != "" && isSameChar(pwd)) { // return -2 //}; var sum1 = [0, 0, 0, 0]; var specicalChars = "!,@,#,$,%,\^,&,*,?,_,~"; var len = pwd.length; for (var i = 0; i < len; i++) { var c = pwd.charCodeAt(i); if (c >= 48 && c <= 57) { //数字 sum1[0] += 1; } else if (c >= 97 && c <= 122) { //小写字母 sum1[1] += 1; } else if (c >= 65 && c <= 90) { //大写字母 sum1[2] += 1; } else if (specicalChars.indexOf(pwd.substr(i, 1)) >= 0) { //特殊字符 sum1[3] += 1; } } //遍历json变量获取字符串 var returnLevel = 0; var hasFind = true; $.each(passwordStrengthRule, function (j, n) { var level = n.level; var rules = n.rule; $.each(rules, function (i, rule) { var index = 0; //依次编译所有的、有配置(该位置==1)的节点 hasFind = true; $.each(getFlag(rule.flag), function (k, value) { if (value == 1) { val = rule.value[index++]; var val = val == 0 ? len : (val > len ? len : val); if (sum1[k] < val) { hasFind = false; return false; } } }); if (hasFind) { returnLevel = level; return false; } }); if (hasFind) { returnLevel = level; } }); return returnLevel; } }