封装常用的表单格式校验(正则表达式)

话不多说,直接上代码!

/**
 * 通用正则表达式,用于表单格式校验
 */

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>

以上就是常用到的表单格式校验,欢迎大家在下面的评论下面补充!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值