123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /**
- 数据验证(表单验证)
- */
- export default {
- error: '',
- check: function(data, rule) {
- for (let i = 0; i < rule.length; i++) {
- if (!rule[i].checkType) { return true }
- if (!rule[i].name) { return true }
- if (!rule[i].errorMsg) { return true }
- if (!data[rule[i].name] && data[rule[i].name !== 0]) { this.error = rule[i].errorMsg; return false }
- let reg, minMax
- switch (rule[i].checkType) {
- case 'string':
- reg = new RegExp('^.{' + rule[i].checkRule + '}$')
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- break
- case 'int':
- reg = new RegExp('^(-[1-9]|[1-9])[0-9]{' + rule[i].checkRule + '}$')
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- break
- case 'between':
- if (!this.isNumber(data[rule[i].name])) {
- this.error = rule[i].errorMsg
- return false
- }
- minMax = rule[i].checkRule.split(',')
- minMax[0] = Number(minMax[0])
- minMax[1] = Number(minMax[1])
- if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
- this.error = rule[i].errorMsg
- return false
- }
- break
- case 'betweenD':
- reg = /^-?[1-9][0-9]?$/
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- minMax = rule[i].checkRule.split(',')
- minMax[0] = Number(minMax[0])
- minMax[1] = Number(minMax[1])
- if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
- this.error = rule[i].errorMsg
- return false
- }
- break
- case 'betweenF':
- reg = /^-?[0-9][0-9]?.+[0-9]+$/
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- minMax = rule[i].checkRule.split(',')
- minMax[0] = Number(minMax[0])
- minMax[1] = Number(minMax[1])
- if (data[rule[i].name] > minMax[1] || data[rule[i].name] < minMax[0]) {
- this.error = rule[i].errorMsg
- return false
- }
- break
- case 'same':
- if (data[rule[i].name] !== rule[i].checkRule) { this.error = rule[i].errorMsg; return false }
- break
- case 'notsame':
- if (data[rule[i].name] === rule[i].checkRule) { this.error = rule[i].errorMsg; return false }
- break
- case 'email':
- reg = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- break
- case 'phoneno':
- // 【数据卡】:14号段以前为上网卡专属号段,如中国联通的是145,中国移动的是147,中国电信的是149等等。
- // 【虚拟运营商】:170[1700/1701/1702]、162(电信),1703/1705/1706、165(移动),1704/1707/1708/1709(联通)、171、167(联通)
- // 【卫星通信】: 1740[0-5] (电信),1349(移动)
- // 【物联网网号】:10648、1440 (移动),10646、146(联通),10649、1410(电信)
- // 【国家工信部应急通信】:1740[6-9],1741[0-2]
- // 手机号码: 13[0-9], 14[5,6,7,8,9], 15[0-3, 5-9], 16[2,5,6,7], 17[0-8], 18[0-9], 19[0-3, 5-9]
- // 移动号段: 13[4-9],147,148,15[0-2,7-9],165,170[3,5,6],172,178,18[2-4,7-8],19[5,7,8]
- // 联通号段: 130,131,132,145,146,155,156,166,167,170[4,7,8,9],171,175,176,185,186,196
- // 电信号段: 133,149,153,162,170[0,1,2],173,174[0-5],177,180,181,189,19[0,1,3,9]
- // 广电号段: 192
- reg = /^1((3[\d])|(4[5-9])|(5[0-3,5-9])|(6[2,5,6,7])|(7[0-8])|(8[0-9])|(9[0-3,5-9]))\d{8}$/
- // reg = /^1((3[\d])|(4[5,6,9])|(5[0-3,5-9])|(6[5-7])|(7[0-8])|(8[1-3,5-8])|(9[1,8,9]))\d{8}$/;
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- break
- case 'ID_Num':
- reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- break
- case 'zipcode':
- reg = /^[0-9]{6}$/
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- break
- case 'reg':
- reg = new RegExp(rule[i].checkRule)
- if (!reg.test(data[rule[i].name])) { this.error = rule[i].errorMsg; return false }
- break
- case 'in':
- if (rule[i].checkRule.indexOf(data[rule[i].name]) == -1) {
- this.error = rule[i].errorMsg; return false
- }
- break
- case 'notnull':
- if (data[rule[i].name] == null || data[rule[i].name].length < 1) { this.error = rule[i].errorMsg; return false }
- break
- }
- }
- return true
- },
- isNumber: function(checkVal) {
- const reg = /^-?[1-9][0-9]?.?[0-9]*$/
- return reg.test(checkVal)
- }
- }
|