话不多说,直接上代码!
/**
* 通用正则表达式,用于表单格式校验
*/
interface Pattern {
reg: RegExp;
msg: string;
}
export const doublePattern: Pattern = {
reg: /^(([1-9][0-9]*)|(([0](\.\d{1,2})?|[1-9][0-9]*\.\d{1,2})))$/,
msg: '请输入不超过两位小数的数字',
};
export const doublePositive: Pattern = {
reg: /^(?=.*[0-9])\d*(?:\.\d{1,2})?$/,
msg: '请输入不小于0且不超过两位小数的数字',
};
export const doubleZF: Pattern = {
reg: /^([\\+ \\-]?(([1-9]\d*)|(0)))([.]\d{0,2})?$/,
msg: '请输入不超过两位小数的正数或负数',
};
export const doubleFF: Pattern = {
reg: /^[1-9]+[,\d]*(\.\d{0,2})?$|^0?\.[1-9]+\d?$|^0?\.0[1-9]+$/,
msg: '请输入大于0且不超过两位小数的数字', //0和0.00正则也是false
};
export const doubleTT: Pattern = {
reg: /^[1-9]+\d*(\.\d{0,3})?$|^0?\.\d{0,3}$/,
msg: '请输入大于0且不超过三位小数的数字',
};
export const doubleDD: Pattern = {
reg: /^[0-9]+\d*(\.\d{0,3})?$|^0?\.\d{0,3}$/,
msg: '请输入大于等于0且不超过三位小数的数字',
};
export const doublePat: Pattern = {
// reg: /^(\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*)|[0]$/,
reg: /^-?[0-9]\d*(?:\.\d{1,2})?$/,
msg: '请输入不超过两位小数的数字',
};
// 只能输入整数
export const intPat: Pattern = {
reg: /^-?[0-9]\d*$/,
msg: '只能输入整数',
};
export const nonNegativeInt: Pattern = {
reg: /^[+]{0,1}(\d+)$/,
msg: '请输入大于等于0的整数!',
};
// 非负数
export const nonNegative: Pattern = {
reg: /^\d+(\.{0,1}\d+){0,1}$/,
msg: '请输入非负数!',
};
// 0-100两位小数
export const weight: Pattern = {
reg: /^(100|[1-9]?\d(\.\d{1,2})?)$/,
msg: '0-100两位小数',
};
// 0-100一位小数
export const percentage: Pattern = {
reg: /^(100|[1-9]?\d(\.\d)?)$/,
msg: '0-100一位小数',
};
// 0-50整数
export const share: Pattern = {
reg: /^[1-5]?[0-9]$/,
msg: '0-50的整数',
};
// 0-10小数两位
export const density: Pattern = {
reg: /^(10|\d(\.\d{1,2})?)$/,
msg: '0-10两位小数',
};
// 0-600的整数
export const milliliter: Pattern = {
reg: /^(600|[1-5]?\d{0,2})$/,
msg: '0-600的整数',
};
// 0-100的整数
export const progressNum: Pattern = {
// reg: /^(100|[1-9]?\d{0,2})$/,
reg: /^([0-9]{1,2}|100)$/,
msg: '0-100的整数',
};
// 0-30的整数
export const livestock: Pattern = {
reg: /^(30|[1-2]?\d)$/,
msg: '0-30的整数',
};
// 0-300的两位小数
export const litter: Pattern = {
reg: /^(300|[0-9]{1,2}(\.\d{1,2})?)$/,
msg: '0-300的两位小数',
};
// 15位长度、不得含有汉字、特殊符号,但特殊符号“.”、“-”允许。
export const overbit: Pattern = {
reg: /^[A-Za-z0-9_.]{0,15}$/,
msg: '不得超过15位、不得含有汉字、特殊符号, 但特殊符号“.”、“-”允许',
};
// 数字和英文。
export const numEng: Pattern = {
reg: /^[A-Za-z0-9]+$/,
msg: '不得超过15位、不得含有汉字、特殊符号, 但特殊符号“.”、“-”允许',
};
// 只允许输入大写字母A/B/C/D
export const upperLetter: Pattern = {
reg: /^[A-D]{0,1}$/,
msg: '只允许输入A、B、C、D',
};
// 只允许输入大写字母A/B/C/D
export const bigLetter: Pattern = {
reg: /^[A-Z]+$/,
msg: '只允许输入大写字母',
};
// 经度
export const lonPattern: Pattern = {
reg: /^-?(0(\.\d{1,10})?|([1-9](\d)?)(\.\d{1,10})?|1[0-7]\d{1}(\.\d{1,10})?|180\.0{1,10})$/,
msg: '请输入正确的经度数据!',
};
export const latPattern: Pattern = {
reg: /^-?((0|([1-8]\d?))(\.\d{1,10})?|90(\.0{1,10})?)$/,
msg: '请输入正确的纬度数据!',
};
export const urlPattern: Pattern = {
reg: /^(https|http)?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i,
msg: '请输入正确的链接地址!',
};
// 密码规则:至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符
export const strongPassWordPattern: Pattern = { // 暂时弃用
reg: /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*? ])(.{8,20})$/,
msg: '密码强度不足,校验不通过,请修改',
};
export const middlePassWordPattern: Pattern = { // 暂时弃用
reg: /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(.{8,20})$/,
msg: '密码强度不足,校验不通过,请修改',
};
// 最新前端密码校验规则
export const strongPasswordCheckPattern: Pattern = {
reg: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[\s\S]{8,}$/,
msg: '密码必须是包含大小写字母/数字的8位以上组合',
};
/*
*判断是否包含汉字
*@val校验的值
*/
export function checkChinese(val: string) {
const reg = new RegExp('[\\u4E00-\\u9FFF]+', 'g');
return reg.test(val);
}
export const positiveInt = /^\+?[1-9]\d*$/; //正整数
export const numberRegex = /^[0-9]*$/; //数字
export const phoneRegex = /^1[3456789]\d{9}$/; // 中国手机号
export const telRegex = /^((0\d{2,3}-\d{7,8})|(1[3456789]\d{9}))$/ //固话,手机号校验
export const bankRegex = /^([1-9]{1})(\d{11}|\d{14}|\d{17})$/; //通用银行卡
export const idCardRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; //大陆身份证
export const moneyRegex = /^[-+]{0,1}[\d\.,]+$/; //金额
export const moneyDotRegex =/(^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d{1,2})?$)/ //金额校验多个小数点的情况
export const ChineseRegex = /^[\u4e00-\u9fa5]*$/; //汉字
使用方式:
1、先引入
import { doublePositive } from '@/utils/pattern';
2、在表单里面使用
<Form.Item name="windPower" label="风力(级)" rules={[{ required: true }, { pattern: doublePositive.reg, message: '格式错误' }]}>
<Input autoComplete="off" disabled={isDisabled} placeholder="请输入风力" />
</Form.Item>
以上就是常用到的表单格式校验,欢迎大家在下面的评论下面补充!