/*
* @Author:
* @Date: 2021-03-22 10:32:21
* @LastEditTime: 2021-11-19 14:00:28
* @LastEditors:
* @Description: 公共校验方法
*/
/* 是否手机号码*/
export function validatePhone(rule, value, callback) {
const reg = /^(1[3-9]\d{9})$|^([5|6|8|9]\d{7})$|^([6]\d{5})$|^(09\d{8})$/
if (value === '' || value === undefined || value == null) {
callback()
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的手机号码'))
} else {
callback()
}
}
}
/* 是否身份证号码*/
export function validateIdNo(rule, value, callback) {
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
if (value === '' || value === undefined || value == null) {
callback()
} else {
if ((!reg.test(value)) && value !== '') {
callback(new Error('请输入正确的身份证号码'))
} else {
// 身份证校验码算法
let sum = 0
for (let i = 17; i > 0; i--) {
sum += (Math.pow(2, i) % 11) * parseInt(value.charAt(17 - i), 11)
}
const idCardLastList = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']
const remainder = sum % 11
if (idCardLastList[remainder] !== value.substr(17, 1).toUpperCase()) {
callback(new Error('请输入正确的身份证号码'))
} else {
callback()
}
// callback()
}
}
}
/**
* 邮箱格式验证
* @param {string} email
* @returns {Boolean}
*/
export function validEmail(rule, value, callback) {
if (!value) {
callback()
return
}
const reg = /^(([^<>()\[\]\\.,;:\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.length > 50) {
callback(new Error(`邮箱长度不能超过50`))
}
if (!reg.test(value)) {
callback(new Error(`邮箱格式有误`))
} else {
callback()
}
}
/**
* 输入验证
* @param {boolean} rule 是否校验格式
* @param {*} value
* @param {*} callback
* @param {string} type 验证字段
* @param {number} length 字符长度
*/
export function validateNormal(rule = true, value, callback, type, length = 50) {
const reg = /^[\u4E00-\u9FA5A-Za-z0-9]+$/g
if (value === '' || value === undefined || value === null) {
callback()
} else {
if (value.length > length) {
callback(new Error(`${type}长度超出限制,限制长度${length}`))
}
if (rule) {
if ((!reg.test(value)) && value !== '') {
callback(new Error(`${type}格式输入错误`))
} else {
callback()
}
} else {
callback()
}
}
}
/**
* 输入验证
* @param {boolean} rule 必须由中英文,数字,特殊符号 - ()
* @param {*} value
* @param {*} callback
* @param {string} type 验证字段
* @param {number} length 字符长度
*/
export function validateNormalCharacter(rule = true, value, callback, type, length = 50) {
const reg = /^[A-Za-z0-9\u4E00-\u9FA5\(\)\uff08\uff09-]+$/
if (value === '' || value === undefined || value === null) {
callback()
} else {
if (value.length > length) {
callback(new Error(`${type}长度超出限制,限制长度${length}`))
}
if (rule) {
if ((!reg.test(value)) && value !== '') {
console.log('又进来了')
callback(new Error(`${type}格式输入错误`))
} else {
callback()
}
} else {
callback()
}
}
}
/**
* @description: 修改密码页面 - 新密码校验规则
* @param {*} value
* @param {*} callback
*/
export function validPassword(value, callback) {
if (!value) {
callback()
}
const reg = /^(?![A-Za-z]+$)(?![A-Z\d]+$)(?![A-Z\W]+$)(?![a-z\d]+$)(?![a-z\W]+$)(?![\d\W]+$)\S{8,50}$/
if (value.length > 50) {
callback(new Error(`密码长度不能超过50`))
}
if (!reg.test(value)) {
callback(new Error(`密码格式输入错误`))
} else {
callback()
}
}
/**
* 座机和传真校验
* @param {string} value
* @returns {Boolean}
*/
export function validTelOrFax(rule, value, callback) {
if (!value) {
callback()
} else {
const reg = /^(\d{3,4}-)?\d{7,8}$/
if (value.length < 10 || value.length > 13 || !reg.test(value)) { // 判断传真字符范围是在10到13
callback(new Error('座机或传真格式如:0376-1234567'))
} else {
callback()
}
}
}
/**
* 网址校验
* @param {string} value
* @returns {Boolean}
*/
export function validURL(rule, value, callback) {
if (!value) {
callback()
} else {
// const reg = /^(?:http(s)?:\/\/)?[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\*\+,;=.]+$/
const reg = /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/
if (!reg.test(value) && value !== '') {
callback(new Error('请输入正确的网址'))
} else {
callback()
}
}
}
js常用正则
最新推荐文章于 2024-07-09 16:10:37 发布