1.座机和手机号:
同时允许座机和手机号:/^1[3456789]\d{9}$|^0\d{2,3}-?\d{7,8}$/g
仅允许手机号:/^1[3456789][0-9]{9}$/g
图解:
释义:以1开头,第二位3456789中取其一,剩余9位随意排列,或者,以0开头,接下来2位或者3位数字,因为3位和4位的行政区划代码均有可能出现,接下来横杠-有没有均可。接下来是7或8位的号码。该校验规则不支持分机号。
2.社会统一信用代码:
/^[123456798ANY]{2}\d{6}[^_IOZSVa-z\W]{10}$
图解:
释义:前两位,在123456789ANY中,取其2,
中间6位为登记管理机关行政区划码,
接下来的9位,为主体识别码,即为三证合一前的组织机构代码,参照的标准为GB11714-1997。但GB11714-1997标准中载明的字母数值对应表与《法人及其他组织统一社会信用代码编制规则》存在部分冲突,以《法人及其他组织统一社会信用代码编制规则》(GB32100-2015)所附录的代码对照表为准。
最后一位为校验码,后10位,排除易混淆字符(I0ZSV)和小写字母,其余均有可能出现。
本校验规则为简单校验,强校验规则较为复杂,可参见此篇: zhuanlan.zhihu.com/p/470645333
3.报关单号:
/^\d{4}(19|20|21)\d{2}(0|1)\d{9}/
图解 :
释义:
1、报关单海关编号为18位,其中第1-4位为接受申报海关的编号(海关规定的《关区代码表》中相应海关代码); 2、第5-8位为海关接受申报的公历年份,第9位为进出口标志(“1”为进口,“0”为出口;集中申报清单“I”为进口,“E”为出口),后9位为顺序编号。
4.正数,允许两位小数,允许以0开始
可以直接在el-input组件上使用 oninput="value= value.match(/\d+(.\d{0,2})?/) ? value.match(/\d+(.\d{0,2})?/)[0] : ''"
匹配规则: /^(([1-9]{1}\d{0,9})|(0{1}))(.\d{1,2})?$/
非零正整数:/^([1-9][0-9]*){1,3}$/
图解:
5.经纬度
经度: /^(-|+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3}).\d{0,15})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180.0{0,15}|180)$/
经度范围:-180~180(保留小数点后0-15位)可以根据需求适当缩减,一般保留4位小数即可。
图解:
纬度: /^(-|+)?([0-8]?\d{1}.\d{0,15}|90.0{0,15}|[0-8]?\d{1}|90)$/
纬度范围:-90~90(保留小数点后0-15位)可以根据需求适当缩减,一般保留4位小数即可。
图解:
6.身份证严格校验(含加权因子):
let cardIdNo = (rule, value, callback) => {
if (value == '') {
return callback(new Error('身份证号不能为空'));
} else {
const mainLand = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}X)$)$/
const Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]// 加权因子
const ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2]// 身份证验证位值,10代表X
let sum = 0 // 声明加权求和变量
let remainder = null // 余数
let lastCode = value[17] // 最后一位
// 将最后位为x的验证码替换为10方便后续操作
if (lastCode === 'x' || lastCode === 'X') {
lastCode = 10
}
// 校验身份证号码
if (!mainLand.test(value)) {
callback('身份证格式有误')
return
}
// 校验身份证最后一位
for (let i = 0; i < 17; i++) {
// 循环遍历前17位,加权求和
const tempnum = value.substring(i, i + 1)
sum += Wi[i] * tempnum
}
// 得到余数
remainder = sum % 11
// 判断校验位和对应验证位是否相等
if (Number(lastCode) === ValideCode[remainder]) {
callback()
} else {
callback('身份证格式有误')
}}
}
7.非空校验:
/^.{1,100}$/g
要求输入长度为1-100的任意长度字符
8.0-1之间的小数:
/^0\.[1-9]\d*$/g
要求输入0-1之间的小数数值
9.el-input直接限制输入值:
oninput="if(!/^[0-9]+$/.test(value)) value=value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');if(value>100)value=100;if(value<0)value=null;if(value<0)value=null;if((value[0] == 0 && value[1] > 0) || value == '00')value=value.slice(1);"
要求输入0-100之间的正数,可保留两位小数