//身份证号码验证
data(){
var checkIdNum = (rule, value, callback) => {
const reg =
/(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)/
if (!value) {
return callback(new Error('证件号码不能为空'))
} else if (!reg.test(value)) {
return callback(new Error('证件号码不正确'))
} else {
callback()
}
},
return{
dialog:{
rules:{
idCard: [
{ required: true, message: '请输入身份证号', trigger: 'blur' },
{ validator:checkIdNum,trigger:'blur' }
],
}
}
}
}
//手机号码
pattern:/^[1][3,4,5,7,8][0-9]{9}$/
//固定电话
pattern:/^0\d{2,3}-\d{7,8}$/,
let checkMobile = (rule, value, callback) => {
const reg = /^[1][3,4,5,7,8][0-9]{9}$/; //手机号码
const reg1 = /^0\d{2,3}-\d{7,8}$/; //电话号码
if(!value){
return callback(new Error('电话号码不能为空'))
}else if(!reg.test(value) && !reg1.test(value)){
return callback(new Error('请输入正确的手机号码或者电话号码'))
}else{
callback();
}
}
//邮箱
pattern:/^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/,
//是否合法IP地址:
pattern:/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
//是否合法url
pattern:/^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/;,
//经度
let lonFormat = (rule, value, callback) => {
const reg = /^-?((1?[0-7]?[0-9]?)(([.][0-9]{1,6})?)|180(([.][0]{1,6})?))$/;
if(!value){
return callback(new Error('经度不能为空'))
}else if(!reg.test(value)){
return callback(new Error('请输入正确的经度格式及范围值,(最多保持6位小数)'))
}else{
callback();
}
}
//纬度
let latFormat = (rule, value, callback) => {
const reg = /^-?(([1-8]?[0-9]?)(([.][0-9]{1,6})?)|90(([.][0]{1,6})?))$/;
if(!value){
return callback(new Error('纬度不能为空'))
}else if(!reg.test(value)){
return callback(new Error('请输入正确的纬度格式及范围值,(最多保持6位小数)'))
}else{
callback();
}
}
//整数
pattern:/^-?[1-9]\d*$/,
//正整数
pattern:/^[1-9]\d*$/,
//小写字母
pattern:/^[a-z]+$/,
//大写字母
pattern:/^[A-Z]+$/,
//大小写混合
pattern:/^[A-Za-z]+$/,
//数字加英文,不包含特殊字符
pattern:/^[a-zA-Z0-9]+$/,
//密码校验(6-20位英文字母、数字或者符号(除空格),且字母、数字和标点符号至少包含两种)
pattern:/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/,
let checkPassword = (rule, value, callback) => {
const reg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/;
if(!value){
return callback(new Error('账号密码不能为空'))
}else if(!reg.test(value)){
return callback(new Error('请输入6-20位英文字母、数字或者符号,至少两种'))
}else{
callback();
}
}
//中文校验
pattern:/^[\u4e00-\u9fa5]+$/,
//data内:
rules:{
lon:[
{ required: true, message: '请选择所属时区', trigger: 'blur' },
{ validator:lonFormat, trigger:'blur' }
],
lat:[
{ required: true, message: '请输入纬度', trigger: 'blur' },
{ validator:latFormat, trigger:'blur' }
],
}
vue 表单验证
于 2023-02-16 10:19:35 首次发布