elementUI-根据证件类型验证证件号格式、验证电话号码和邮箱格式但非必填、验证网址
data() { let checkIDCard = (rule, value, callback) => { const IDCardReg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(([0-2][1-9])|10|20|30|31)\d{3}(\d|X|x)$/ if (value) { if (IDCardReg.test(value)) { callback() } else { callback(new Error('身份证号格式不正确')) } } else { callback(new Error('请输入身份证号')) } } let checkHKCard = (rule, value, callback) => { /** * 规则: H/M + 10位或6位数字 * 样本: H1234567890 */ const HKCardReg = /^([A-Z]\d{6,10}(\(\w{1}\))?)$/ if (value) { if (HKCardReg.test(value)) { callback() } else { callback(new Error('港澳通行证号格式不正确')) } } else { callback(new Error('请输入港澳通行证号')) } } let checkTWCard = (rule, value, callback) => { /** * 规则: 新版8位或18位数字, 旧版10位数字 + 英文字母 * 样本: 12345678 或 1234567890B */ const TWCardReg = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/ if (value) { if (TWCardReg.test(value)) { callback() } else { callback(new Error('台湾通行证号格式不正确')) } } else { callback(new Error('请输入台湾通行证号')) } } let checkPassport = (rule, value, callback) => { /** * 规则: 新版8位或18位数字, 旧版10位数字 + 英文字母 * 样本: 12345678 或 1234567890B */ const passportReg = /^\d{8}|^[a-zA-Z0-9]{10}|^\d{18}$/ if (value) { if (passportReg.test(value)) { callback() } else { callback(new Error('护照号码格式不正确')) } } else { callback(new Error('请输入护照号码')) } } let checkPhone = (rule, value, callback) => { const phoneReg = /(^1([3|4|5|7|8|])\d{9}$)|(^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$)/ if (value) { if (phoneReg.test(value)) { callback() } else { callback(new Error('联系电话格式不正确')) } } else { callback() } } let checkEmail = (rule, value, callback) => { const mailReg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ if (value) { if (mailReg.test(value)) { callback() } else { callback(new Error('请输入正确的邮箱格式')) } } else { callback() } } return { checkIDCard: checkIDCard, checkHKCard: checkHKCard, checkTWCard: checkTWCard, checkPassport: checkPassport, ruleForm: { certificateType: '', // 证件类型 certificateNumber: '', // 证件号 tel: '', // 电话 email: '' // 联系邮箱 }, // 验证规则 rules: { certificateType: [{ required: true, message: '请选择证件类型', trigger: 'change' }], certificateNumber: [{ required: true, message: '请先选择证件类型', trigger: 'change' }], tel: [{ validator: checkPhone, trigger: 'change' }], email: [{ validator: checkEmail, trigger: 'change' }] } }
methods: { // 切换证件类型,验证身份证、港澳通行证、台湾通行证、护照 handleCardChange() { if (this.ruleForm.certificateType == 1) { this.rules.certificateNumber = [{ required: true, validator: this.checkIDCard, trigger: 'change' }] } else if (this.ruleForm.certificateType == 2) { this.rules.certificateNumber = [{ required: true, validator: this.checkHKCard, trigger: 'change' }] } else if (this.ruleForm.certificateType == 3) { this.rules.certificateNumber = [{ required: true, validator: this.checkTWCard, trigger: 'change' }] } else if (this.ruleForm.certificateType == 4) { this.rules.certificateNumber = [{ required: true, validator: this.checkPassport, trigger: 'change' }] } else { this.rules.certificateNumber = [{ required: true, message: '请先选择证件类型', trigger: 'change' }] } }
}
验证url:
let strUrl = '^((https|http|ftp|rtsp|mms)?://)' + "?(([0-9a-z_!~*'().&=+$%-]+: )?[0-9a-z_!~*'().&=+$%-]+@)?" + //ftp的user@ '(([0-9]{1,3}.){3}[0-9]{1,3}' + // IP形式的URL- 199.194.52.184 '|' + // 允许IP和DOMAIN(域名) "([0-9a-z_!~*'()-]+.)*" + // 域名- www. '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z].' + // 二级域名 '[a-z]{2,6})' + // first level domain- .com or .museum '(:[0-9]{1,4})?' + // 端口- :80 '((/?)|' + // a slash isn't required if there is no file name "(/[0-9a-z_!~*'().;?:@&=+$,%#-]+)+/?)$" let checkUrl = (rule, value, callback) => { const urlReg = new RegExp(strUrl) if (value) { if (urlReg.test(value)) { callback() } else { callback(new Error('请输入正确的url格式')) } } else { callback() } }
rules: {
authenticityQuery: [
{ required: true, message: '请输入网址', trigger: 'blur' },
{ validator: checkUrl, trigger: 'change' }
]
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结