/** * @description: 通用正则验证方法 * @author: chenxiaoxi * @date: 2018-09-04 11:29:05 */ export const specialCharacterReg = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{} %【】\\s‘;:”“'。,、?]") export const asteriskReg = new RegExp('\\*') export default { // 验证Email checkEmails (rule, value, callback) { if (value === null || value === '') { return callback(new Error('不能为空')) } let pattern = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/ if (!pattern.test(value)) { return callback(new Error('邮箱格式不正确')) } else { callback() } }, /** * 验证字母、数字、.、-的正则 * 应用于标准编号、条款号等 * */ validateStandardItem (rule, value, callback) { // return callback() let testval = /^[A-Za-z0-9/]+$/ let testval1 = /[.-]+/ if (value && !value.match(testval) && !value.match(testval1)) { return callback(new Error('只能为(字母、数字、.、-)')) } else { callback() } }, /** * 验证字母、数字、.、-的正则且不能重复 * 应用于标准编号、条款号等 * */ validateStandardItemNoRepeat(rule, value, callback) { // let testval = /^[A-Za-z0-9/ ,.-\\-()]+$/ // if (value && !value.match(testval)) { // return callback(new Error('只能为(字母、数字、.、-)')) // } else if (value.indexOf(',') > -1) { const val = value.split(',') const valList = [] const repeatList = [] let flag = true val.map(item => { if (!valList.includes(item)) { valList.push(item) } else { repeatList.push(item) flag = false } }) if (flag) { callback() } else { return callback(new Error(`数据 ${repeatList.join(',')} 重复,请重新输入`)) } } else { callback() } }, // 验证动态内容 validateContent (rule, value, callback) { if (value === '') { return callback(new Error('动态内容不能为空且不能全为空格')) } else { callback() } }, // 验证手机号码 checkMobilePhone (rule, value, callback) { if (!value) { // return callback(new Error('手机号码不能为空')) return callback() } let tel = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/ if (!value.match(tel)) { return callback(new Error('手机格式不正确')) } else { callback() } }, // 验证手机号码2 checkMobilePhone2 (rule, value, callback) { let tel = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/ if (value === '') { callback() } else if (!value.match(tel)) { return callback(new Error('手机格式不正确')) } callback() }, // 验证办公电话 checkOfficePhone (rule, value, callback) { let tel2 = /^[0-9\-\\(\\)()x]+$/ if (value === null || value === '') { callback() } else if (!tel2.test(value)) { return callback(new Error('办公电话格式不正确')) } else { callback() } }, // 验证个人中心传真 checkFaxAddress (rule, value, callback) { let tel = /^\d{1,100}$/ if (value === null || value === '') { callback() } else if (!value.match(tel)) { return callback(new Error('输入上限为100,且必须为数字')) } else { callback() } }, checkOnlyNumber (rule, value, callback) { let tel = /^\d{1,2}$/ if (value === null || value === '') { callback() } else if (!value.match(tel)) { return callback(new Error('仅能输入不大于两位的数字')) } else { callback() } }, // 验证特殊字符(非必填) checkSpecialCharacter (rule, value, callback) { if (value === '') { callback() } else { let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{} %【】\\s‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } else { callback() } }) } }, // 验证url checkUrl (rule, value, callback) { if (value === '') { callback() } else { let pattern = new RegExp(/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?/i) // eslint-disable-line if (!pattern.test(value)) { return callback(new Error('链接网址格式错误')) } else { callback() } } callback() }, // 验证特殊字符无长度限制(必填) checkSpecialCharacter2 (rule, value, callback) { let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\]<>/?~!@#¥……&*()——|{} %【】\\s‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } else { callback() } }) }, // 车型项目库 项目名称校验使用 提示词不同 能输入 中英文 数字 横线(-) 下划线(_) 括号 checkSpecialCharacterProduct (rule, value, callback) { let pattern = new RegExp("[`~!@#$^&*=|{}':;',\\[\\]<>/?~!@#¥……&*|{} %【】\\s‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('能输入中英文、数字、横线(-)、下划线(_)、括号')) } else { callback() } }) }, // 验证标准法规属性管理字符长度与非空 checkCharacter (rule, value, callback) { if (value === '') { return callback(new Error('选项不能为空')) } else { let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{} %【】\\s‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } callback() }) } }, // 验证标准法规属性管理字符长度与非空 checkCharacter2 (rule, value, callback) { if (value === '') { return callback(new Error('描述不能为空')) } else { let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{} % \\s【】‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } callback() }) } }, // 验证动态信息管理动态标题 checkInformation (rule, value, callback) { if (value === '') { return callback(new Error('动态标题不能为空')) } else { let pattern = new RegExp("[`~!@#$^&*=|{}':;',\\[\\].<>/?~!@#¥……&*——|{}%【】‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } callback() }) } }, // 验证动态信息管理动态标题 checkInformationTestItemStand (rule, value, callback) { if (value === '') { return callback(new Error('动态标题不能为空')) } else { let pattern = new RegExp("[`~!@#$^&*=|{}':;',\\[\\]<>?~!@#¥……&*——|{}%【】‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } callback() }) } }, // 验证账号 checkUsername (nullTips, errTips) { return (rule, value, callback) => { if (!value) { return callback(new Error(nullTips || '不能为空')) } let pattern = /\w{3,15}$/ setTimeout(() => { if (pattern.test(value) === false) { return callback(new Error(errTips || '只能由3-15位的数字、字母组成')) } else { callback() } }, 1000) } }, validateStandardNum (rule, value, callback) { let testval = /^\d+(\.\d+)*$/ let pattern1 = /\w{1,100}$/ let pattern2 = /\w{0,100}$/ // 验证代替标准号,和被代替标准号,因为非必填项,所以长度可能是0 if (rule.field === 'standNumber') { if (!value) { return callback(new Error('标准编号不能为空')) } else if (!value.match(testval)) { return callback(new Error('1到100字符数字,支持“数字.数字”')) } else if (!value.match(pattern1) && rule.field === 'standNumber') { return callback(new Error('1到100字符数字,支持“数字.数字”')) } else { callback() } } else { if (value) { if (!value.match(testval)) { return callback(new Error('100以内字符,支持“数字.数字”')) } else if (!value.match(pattern2) && rule.field !== 'standNumber') { return callback(new Error('100以内字符,支持“数字.数字”')) } else { callback() } } else { callback() } } }, // 验证排序序号 0-100 validateStandarOrder (rule, value, callback) { if (!value) { return callback(new Error('排序序号不能为空')) } let pattern = /^\+?[0-9]*$/ setTimeout(() => { if (!pattern.test(value)) { return callback(new Error('请输入100以内的非负整数')) } else if (value > 100) { return callback(new Error('请输入100以内的非负整数')) } else { callback() } }) }, /** * 验证不为0的正整数正则 * */ validStandNumInCompile2 (rule, value, callback) { // let pattern = /^\d+$/ let pattern = /^[1-9]\d*$/ setTimeout(() => { if (!pattern.test(value)) { return callback(new Error('仅能输入正整数')) } else { callback() } }) }, validStandNumInCompile3 (rule, value, callback) { let pattern = /^\d+$/ setTimeout(() => { if (!pattern.test(value)) { return callback(new Error('仅能输入正整数')) } else if (value > 4000) { return callback(new Error('最大长度不能超过4000')) } else { callback() } }) }, valiateEnName (rule, value, callback) { let reg = /[\u4E00-\u9FA5\uF900-\uFA2D'"‘’”“]/ if (value === '' || value == null) { callback() } else { if (value.match(reg)) { return callback(new Error('英文名称不能输入中文及引号')) } else { /* let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{} %【】‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } else { callback() } }) */ callback() } } }, remakeY (rule, value, callback) { let reg = /[‘’”“'"]/g if (value === '' || value == null) { callback() } else { if (value.match(reg)) { return callback(new Error('不能输入引号')) } else { callback() } } }, remakeBD (rule, value, callback) { let reg = /[‘’”“']/g if (value === '' || value == null) { callback() } else { if (value.match(reg)) { return callback(new Error('不能输入引号')) } else { callback() } } }, valiateName (rule, value, callback) { let reg = /[^\u4E00-\u9FA5‘’”“'"]/g if (value === '' || value == null) { callback() } else { if (value.match(reg)) { return callback(new Error('中文名称不能输入英文及引号')) } else { /* let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{} %【】‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } else { callback() } }) */ callback() } } }, // 验证年份 valiateStandYear (rule, value, callback) { let reg = /^\d{4}$/ if (value.match(reg)) { callback() } else { return callback(new Error('输入正确的年份')) } }, // 验证特殊字符,但不包括半角分号(非必填) gaoyan checkSpecialCharacterOftags (rule, value, callback) { if (value === '') { callback() } else { let pattern = new RegExp("[`~!@#$^&*=|{}':',\\[\\].<>/?~!@#¥……&*——|{}%【】‘:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } callback() }) } }, // syt 系统账户验证 checkUsername2 (rule, value, callback) { let reg = /^(?=.*[a-zA-Z])/ if (value === '' || value == null) { return callback(new Error('系统账号不能为空')) } else { if (!value.match(reg)) { return callback(new Error('至少包含1个字母')) } else { let pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{} %【】‘;:”“'。,、?]") // eslint-disable-line setTimeout(() => { if (pattern.test(value) === true) { return callback(new Error('不能包含特殊字符')) } else { callback() } }) } } }, // 验证企业标准台账标准编号,仅能输入英文,数字,点,/,- validStandNumInCompile (rule, value, callback) { if (value === '') { callback() } else { let pattern = /^[a-zA-Z0-9//]*$/ setTimeout(() => { if (!value.match(pattern)) { return callback(new Error('仅能输入英文,数字,/')) } callback() }) } }, valiCategory (rule, value, callback) { if (value != null && value.length > 20) { return callback(new Error('多选择项不能超过20个')) } else { callback() } }, // 验证输入数字和英文 testItemCode (rule, value, callback) { let reg = /^[0-9a-zA-Z]+$/ if (value !== '' && !value.match(reg)) { return callback(new Error('只能输入字母、数字')) } else { callback() } }, // 验证输入数字 testNumberCode (rule, value, callback) { let reg = /^[0-9]*$/ if (value !== '' && !value.match(reg)) { return callback(new Error('只能输入数字')) } else { callback() } }, validUrl (rule, value, callback) { let reg = /(^((https|ftp|http|file):\/\/)|www\.)*([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/gm if (!value.match(reg)) { return callback(new Error('请输入正确的网址')) } else { callback() } }, valiApply (rule, value, callback) { if (value != null && value.length > 100) { return callback(new Error('多选择项不能超过100个')) } else { callback() } }, validFieldOracle (rule, value, callback) { if (value === '') { callback() } else { let pattern = /^[A-Z_]+$/ setTimeout(() => { if (!value.match(pattern)) { return callback(new Error('仅能包含大写英文,下划线')) } callback() }) } }, // 验证编码 validateCode (rule, value, callback) { if (value === '') { callback() } else { let pattern = /^[A-Z0-9]*$/ setTimeout(() => { if (!value.match(pattern)) { return callback(new Error('仅能包含大写英文,数字')) } callback() }) } }, }