常用的表单校验规则——邮箱/QQ/身份证号码/微信/电话/数字字母/整数/文本/密码等
1.邮箱校验规则
//邮箱校验
export const validateEmail = async (RuleObject, value) => {// const reg = new RegExp(/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+$/)const reg = new RegExp(/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/)if (value) {if (!reg.test(value)) {return Promise.reject('请输入正确的邮箱');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
2.邮箱校验规则
export const validateEmail1 = async (RuleObject, value) => {const reg = new RegExp(/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/)if (value) {if (!reg.test(value)) {return Promise.reject('请输入正确的邮箱');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
3.QQ校验规则
//qq校验
export const validateQQ = async (RuleObject, value) => {const reg = new RegExp(/^[1-9][0-9]{4,10}$/);if (value) {if (!reg.test(value)) {return Promise.reject('请输入正确的QQ号');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
4.身份证号码校验规则
//身份证号校验
export const validateIdCard = async (RuleObject, value) => {const reg = new RegExp(/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/);const reg1 = new RegExp(/^[A-Z]\d{7,11}$/)if (value) {if (!reg1.test(value)&&!reg.test(value)) {return Promise.reject('请输入正确的身份证号');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
5.微信校验规则
//微信校验
export const validateCharts = async (RuleObject, value) => {const reg = new RegExp(/^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/);if (value) {if (!reg.test(value)) {return Promise.reject('请输入正确的微信号');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
6.电话校验规则
//电话校验
export const validatPhone = async (RuleObject, value) => {const reg = new RegExp(/^(?:(?:\+|00)86)?1[3-9]\d{9}$/);if (value) {if (!reg.test(value)) {return Promise.reject('请输入正确的手机号');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
7.银行卡号校验规则
//银行卡号校验
export const validatBankCard = async (RuleObject, value) => {const reg = new RegExp(/^[1-9]\d{9,29}$/);if (value) {if (!reg.test(value)) {return Promise.reject('请输入正确的银行卡号');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
8.数字字母校验规则
//数字字母校验
export const validatNumberLetter = async (RuleObject, value) => {const reg = new RegExp(/^([A-Z]|[a-z]|[\d])*$/);if (value) {if (!reg.test(value)) {return Promise.reject('请输入正确的工号');} else {return Promise.resolve();}} else {return Promise.resolve();}
}
9.整数校验规则
//整数校验
export const validateInitNumber = async (RuleObject, value, min, max) => {if (value !== '' && value !== null && value !== undefined) {if (!Number(value) && value !== 0) {return Promise.reject('请输入数字');} else if (!Number.isInteger(Number(value))) {return Promise.reject('请输入整数');} else {if (max) {value = Number(value);if (value > max || value < min) {return Promise.reject('请输入' + min + '到' + max + '之间的数值');} else {return Promise.resolve();}} else {return Promise.resolve();}}} else {return Promise.resolve();}
}
10.数字校验规则
//数字校验
export const validateNumber = async (RuleObject, value, min, max) => {if (value !== '' && value !== null && value !== undefined) {if (!Number(value) && value !== 0) {return Promise.reject('请输入数字');} else {if (max) {if (value > max || value < min) {return Promise.reject('请输入' + min + '到' + max + '之间的数值');} else {return Promise.resolve();}} else {return Promise.resolve();}}} else {return Promise.resolve();}
}
11.文本校验规则
//文本校验
export const validateInitTxt = async (RuleObject, value, min, max) => {if (value) {if (max) {if (value.length > max || value.length < min) {return Promise.reject('请输入' + min + '到' + max + '个字符');} else {return Promise.resolve();}} else {return Promise.resolve();}} else {return Promise.resolve();}
}
12.密码校验规则
//密码校验
export const validatePWD = async (RuleObject, value, min, max) => {if (value) {if (max) {if (value.length > max || value.length < min) {return Promise.reject('请输入' + min + '到' + max + '个字符');} else {return Promise.resolve();}} else {return Promise.resolve();}} else {return Promise.resolve();}
}
最后附上rules
中的使用方法
import { validateEmail,validateInitTxt, validateQQ, validateIdCard, validatPhone,validateEmail1, validatBankCard, validateInitNumber,validateNumber,validateCharts,validatNumberLetter } from './validateForm.js';
export default {'姓名': [{required: true, message: '请输入名字'},{validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 30), trigger: 'change'}],'年龄': [{required: true, message: '请输入年龄'},{validator: async (RuleObject, value) => validateInitNumber(RuleObject, value, 16, 65), trigger: 'change'}],'身高': [{required: true, message: '请输入身高'},{validator: async (RuleObject, value) => validateInitNumber(RuleObject, value, 140, 210), trigger: 'change'}],'体重': [{required: true, message: '请输入体重'},{validator: async (RuleObject, value) => validateNumber(RuleObject, value, 35, 200), trigger: 'change'}],'邮件': [{required: true, message: '请输入邮件'},{validator: validateEmail, trigger: 'change'}],'邮箱': [{required: true, message: '请输入邮箱'},{validator: validateEmail1, trigger: 'change'}],'QQ': [{required: true, message: '请输入QQ'},{validator: validateQQ, trigger: 'change'}],'微信': [{required: true,message: '请输入微信'},{validator: validateCharts, trigger: 'change'}],'身份证': [{required: true, message: '请输入身份证号'},{validator: validateIdCard, trigger: 'change'}],'电话': [{required: true, message: '请输入联系电话'},{validator: validatPhone, trigger: 'change'}],'银行卡': [{required: true,message: '请输入银行卡卡号'},{validator: validatBankCard, trigger: 'change'}],'留言板': [{required: true,message: '请输入'},{validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 300), trigger: 'change'}],'输入框50': [{required: true,message: '请输入'},{validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 50), trigger: 'change'}],'输入框30': [{required: true,message: '请输入'},{validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 30), trigger: 'change'}],'下拉框': [{required: true, message: '请选择'}],'整数': [{required: true,message: '请输入'},{validator: validateInitNumber, trigger: 'change'}],'组合':[{required: true,message: '请输入'},{validator: validatNumberLetter, trigger: 'change'},],'浮点数': [{required: true,message: '请输入'},{validator: validateNumber, trigger: 'change'}]}
相关文章:
常用的表单校验规则——邮箱/QQ/身份证号码/微信/电话/数字字母/整数/文本/密码等
1.邮箱校验规则 //邮箱校验 export const validateEmail async (RuleObject, value) > {// const reg new RegExp(/^[A-Za-z0-9\u4e00-\u9fa5][a-zA-Z0-9_-]$/)const reg new RegExp(/^[a-zA-Z0-9_-]([a-zA-Z0-9]\.)(com|cn|net|org)$/)if (value) {if (!reg.test(value…...

Mysql数据库 11.SQL语言 储存过程 下 储存过程管理和游标
一、存储过程管理 1.查询存储过程 查询所有储存过程 语法 show procedure status; 代码实现 #查询存储过程 show procedure status; 运行结果 加入条件查询储存过程 语法 show procedure status where db储存过程名; 代码实现 #查询带有条件的储存过程 查询名字为pro…...

如何在Visual Studio上创建项目并运行【超级详细】
工欲善其事,必先利其器。想要学好编程,首先要把手中的工具利用好,今天小编教一下大家如何在史上最强大的编译器--Visual Studio上创建项目。🍗 一.打开编译器🍗 双击你电脑上的vs,(2012,2019,2022)都行。&…...
《C++ Primer》第7章 类(二)
参考资料: 《C Primer》第5版《C Primer 习题集》第5版 7.4 类的作用域(P253) 每个类都有自己的作用域,在类的作用域之外,普通的数据和函数成员只能由对象、引用或指针使用成员访问运算符访问,类型成员则…...
git仓库代码克隆
说明: 由于服务项目的厂商不同且需求不断变化且交付周期临近,所以想把之前一个仓库的代码弄到一个新的仓库,待交付完毕后再进行代码整合。 第一步 先创建一个远程仓库用来放你要克隆的代码。 第二步 克隆一份裸版本代码库 git clone --ba…...

AM@向量代数@向量基本概念和向量线性运算
文章目录 abstract向量的基本概念向量向量的坐标分解式和坐标👺向量的模向量的长度(大小)👺零向量单位向量👺方向向量非零向量的单位向量正规化向量夹角👺 向量方向角和向量间夹角投影几何描述向量的线性运算向量的加减运算向量的…...
2023-11-08 LeetCode每日一题(最长平衡子字符串)
2023-11-08每日一题 一、题目编号 2609. 最长平衡子字符串二、题目链接 点击跳转到题目位置 三、题目描述 给你一个仅由 0 和 1 组成的二进制字符串 s 。 如果子字符串中 所有的 0 都在 1 之前 且其中 0 的数量等于 1 的数量,则认为 s 的这个子字符串是平衡子…...

Web3.0的测试题
任务: 在前端开发一个查询UI,查询当前用户账户的ETH余额和指定ERC20合约中的余额 目标: UI框架指定使用 MUI (https://mui.com)需要查询到当前账户的ETH余额并展示在UI界面上需要输入ERC20合约地址后,查询到到当前账户在此ERC20…...

Javascript知识点详解:对象的继承、原型对象、原型链
目录 对象的继承 原型对象概述 构造函数的缺点 prototype 属性的作用 原型链 constructor 属性 instanceof 运算符 构造函数的继承 多重继承 对象的继承 面向对象编程很重要的一个方面,就是对象的继承。A 对象通过继承 B 对象,就能直接拥有 B …...

学之思开源考试系统部署至Centos7
学之思开源考试系统部署至Centos7 1、下载源码 源码下载: https://gitee.com/mindskip/xzs-mysql 数据库脚本下载: https://www.mindskip.net:999/ 2、项目打包 分别在\source\vue\xzs-student目录和source\vue\xzs-admin目录,执行前端打…...
如何利用浏览器的可见性API优化网站性能
最近在使用微软AI聊天工具Bing时,发现一个有趣的东西。我向它提问后,它在持续输出的过程中,如果我离开了当前它的浏览器会话,比如切屏,看当前浏览器的其它标签页,它会默认停止它的输出,等我回来…...

还不知道IP地址不够用是怎么被大牛们解决的?(NAT/NAPT, IPv6, DHCP)
文章目录 前言1. DHCP网络管理协议什么是 DHCPDHCP 两种分配机制 2. NAT网络地址转换协议什么是 NATNAT 技术使用NAT网络设备间如何通信两个内网设备相互通信不同内网中的设备相互通信NAT IP转换过程 NAPT 技术NAT 技术的缺陷 3. IPv6 协议什么是 IPv6 总结 前言 在之前的文章…...

使用决策树预测隐形眼镜类型
任务描述 本关任务:编写一个例子讲解决策树如何预测患者需要佩戴的隐形眼镜类型。使用小数据集,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要佩戴的镜片类型,一旦理解了决策树的工作原理,我们甚至也…...

[ACTF2020 新生赛]BackupFile 1
题目环境: 好好好,让找源文件是吧?咱们二话不说直接扫它后台 使用dirsearch工具扫描网站后台(博主有这个工具的压缩包,可以私聊我领取)python dirsearch.py -u http://0d418151-ebaf-4f26-86b2-5363ed16530…...
解决vuex刷新数据丢失
Vuex 是一个 Vue.js 的状态管理库,它使得你可以在 Vue 组件之间共享状态。当你在 Vuex 中更新状态时,如果你遇到数据丢失或数据不一致的问题,可能需要进行深度复制或者使用其他方式来确保数据的完整性。 假设你有一个 Vuex 存储,…...

linux系统下读取当前硬盘的温度
这个其实很简单,借助于smartctl工具(Ubuntu默认安装好了),标红的部分就是当前温度,单位是摄氏度。 sudo smartctl -l scttempsts /dev/sda...

python 深度学习 解决遇到的报错问题8
本篇继python 深度学习 解决遇到的报错问题7-CSDN博客 目录 一、OSError: [WinError 127] 找不到指定的程序。 Error loading "D:\my_ruanjian\conda-myenvs\deeplearning\lib\site-packages\torch\lib\caffe2_detectron_ops.dll" or one of its dependencies. 二、…...
Linux pipe()系统调用示例
Linux系统调用pipe函数,创建一个pipe,通过传入的fd数组返回pipe的读、写两端。 其中fd[ 0 ]用于读,fd[ 1 ]用于写。 一个pipe是单向数据传输的,不用用于父子进程双向读写。创建2个pipe实现父子进程间的双线读写。 #include <u…...
音频中的采样率和比特率
音频中的采样率和比特率 采样频率千比特率音频比特率 采样频率 参考:https://blog.csdn.net/qq_38907791/article/details/88925224 采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它…...
Python常用脚本
1.解压指定文件夹内的zip包,解压到当前位置 import os import zipfile# 指定文件夹路径 folder_path "/path/to/your/folder"# 获取文件夹下所有的zip文件 zip_files [os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.e…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...