Last active
April 2, 2022 09:38
-
-
Save yeyuguo/6bc3c0122e1ded9b23286357acafac4b to your computer and use it in GitHub Desktop.
一些校验规则
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** 校验表格 */ | |
export function validForm(formObj, success, error) { | |
if (!formObj) return | |
formObj.validate(valid => { | |
console.log('valid: ', valid); | |
if (valid) { | |
success && success() | |
} else { | |
error && error(valid) | |
} | |
}) | |
} | |
/** 校验数量不能超过50, 单个词语不能超过20长度 */ | |
export function validLength(value, { | |
maxWords = 20, | |
maxLengthWord = 500 | |
} = {}) { | |
// const maxW = 4, maxL = 3 | |
let valueArray = inpuTransformFlag2Ary(value) | |
// 关键词不能超过100个 | |
if (valueArray.length > maxWords) { | |
return false | |
} | |
// 长度不能超过 20 , 特殊做去空不计算 | |
let getOverlength = valueArray.filter(item => { | |
return item.length > maxLengthWord | |
}) | |
if (getOverlength.length) { | |
return false | |
} | |
return true | |
} | |
// 替换规则 | |
export function inpuTransformFlag2Ary(value, reg = /(\r\n|\n|,|,)/g, target = ',') { | |
//IE9、FF、chrome = \r\n; IE7-8=\n | |
return value.replace(reg, target).split(target).filter(item => item) | |
} | |
export function isvalidUsername(str) { | |
const valid_map = ['admin', 'editor'] | |
return valid_map.indexOf(str.trim()) >= 0 | |
} | |
/* 合法uri*/ | |
export function validateURL(rule, value, callback) { | |
const urlregex = /(http[s]?|ftp):\/\/[^\/\.]+?\..+\w$/ | |
if (value !== '') { | |
return urlregex.test(value) ? | |
callback() : | |
callback(new Error('请输入正确的网站地址')) | |
} else { | |
callback(new Error('请输入网站地址')) | |
} | |
} | |
/* 小写字母*/ | |
export function validateLowerCase(str) { | |
const reg = /^[a-z]+$/ | |
return reg.test(str) | |
} | |
/* 大写字母*/ | |
export function validateUpperCase(str) { | |
const reg = /^[A-Z]+$/ | |
return reg.test(str) | |
} | |
/* 大小写字母*/ | |
export function validateAlphabets(str) { | |
const reg = /^[A-Za-z]+$/ | |
return reg.test(str) | |
} | |
/* 校验手机号*/ | |
export function validatePhone(rule, value, callback) { | |
if (value && String(value).indexOf('*') !== -1) return callback() | |
const reg = /^1(3|4|5|6|7|8|9)[0-9]{9}$/ | |
return reg.test(value) ? | |
callback() : | |
callback(new Error('请输入正确的手机号')) | |
} | |
/* 校验验证码*/ | |
export function validatePhoneCode(rule, value, callback) { | |
if (value && value.indexOf('*') !== -1) return callback() | |
const reg = /^[0-9]{6}$/ | |
return reg.test(value) ? | |
callback() : | |
callback(new Error('请输入正确的验证码')) | |
} | |
/* 校验税号*/ | |
export function validateDutyParagraph(rule, value, callback) { | |
const reg = /^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/ | |
return reg.test(value) ? | |
callback() : | |
callback(new Error('请输入15,18或20位税务登记号')) | |
} | |
/* 校验身份证号*/ | |
export function validateOwnerId(rule, value, callback) { | |
if (value && value.indexOf('*') !== -1) return callback() | |
const reg = /^[A-Z0-9]{15}$|^[A-Z0-9]{17}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/ | |
return reg.test(value) ? | |
callback() : | |
callback(new Error('请输入正确的身份证号')) | |
} | |
/* 上传图片*/ | |
export function validateImg(rule, value, callback) { | |
if (value && value.length > 0 && value[0].url) { | |
return callback() | |
} else { | |
return callback(new Error(rule.message || '请上传传图片')) | |
} | |
} | |
// 小于等于n位数字数字或者字母 | |
export function validateWord(rule, value, callback) { | |
const reg = /^[a-zA-Z0-9]{0,15}$/ | |
return reg.test(value) ? callback() : callback(new Error(rule.message || '最多15位数字或者字母')) | |
} | |
export function checkStart(str) { | |
var myReg = /\*/ | |
if (myReg.test(str)) { | |
return true | |
} | |
return false | |
} | |
// 特殊字符 | |
export function validateBite(rule, value, callback) { | |
const reg = /^[*_\u4e00-\u9fa5_a-zA-Z0-9]+$/ | |
if (value.length > 39) { | |
return callback(new Error(rule.message || '地址信息长度不能大于39个字符!')) | |
} | |
if (reg.test(value)) { | |
return callback() | |
} else { | |
return callback(new Error(rule.message || '仅支持中英文,不区分大小写,数字,不支持空格、特殊字符等。')) | |
} | |
} | |
/** 中英文字符支持传入参数 */ | |
export function validateCount({min, max}) { | |
return (rule, value, callback) => { | |
const reg = /^[*_\u4e00-\u9fa5_a-zA-Z0-9]+$/ | |
if(max && value.length > max) { | |
return callback(new Error(rule.message || `长度不能大于${max}个字符!`)) | |
}else if(min && value.length < min) { | |
return callback(new Error(rule.message || `长度不能大于${min}个字符!`)) | |
} | |
if (reg.test(value)) { | |
return callback() | |
} else { | |
return callback(new Error(rule.message || '仅支持中英文,不区分大小写,数字,不支持空格、特殊字符等。')) | |
} | |
} | |
} | |
/* 上传图片*/ | |
export function validateProtocol(rule, value, callback) { | |
if (value) { | |
return callback() | |
} else { | |
return callback(new Error(rule.message || '您还未同意xxxx协议!')) | |
} | |
} | |
/** 验证数组长度 */ | |
export function validArrayLength(rule, value, callback) { | |
if(value && value.length) { | |
return callback() | |
}else{ | |
return callback(new Error(rule.message)) | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment