/**
* 判断手机号码是否正确
*/
export function isValidMobile(phone) {
let result = true
let msg = ''
const list = [result, msg]
let isPhone = /^1[3456789]\d{9}$/
// 增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
if (!validatenull(phone)) {
if (phone.length == 11) {
if (!isPhone.test(phone)) {
msg = '手机号码格式不正确'
} else {
result = false
}
} else {
msg = '手机号码长度不为11位'
}
} else {
msg = '请输入手机号码'
result = true
// msg = '手机号码不能为空';
}
list[0] = result
list[1] = msg
return list
}
/**
* url校验
*/
export function validURL(url) {
const reg = /^(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.,?'\\+&%$#=~_-]+))*$/
return reg.test(url)
}
/**
* 小写字母校验
*/
export function validLowerCase(str) {
const reg = /^[a-z]+$/
return reg.test(str)
}
/**
* 大写字母校验
*/
export function validUpperCase(str) {
const reg = /^[A-Z]+$/
return reg.test(str)
}
/**
* 邮箱校验
*/
export function validEmail(email) {
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,}))$/
return reg.test(email)
}
/**
* 密码校验
*/
export const isValidPassword = (value) => {
let result = []
// const isPass = /^(?=.*?[0-9])(?=.*?[A-Z])(?=.*?[a-z])[0-9a-zA-Z]{8,}$/.test(value)
const isPass = /^.*(?=.{8,})(?=.*?[0-9])(?=.*?[A-Z])(?=.*?[a-z])(?=.*[!@#$%^&_=\-\+*?\(\)]).*$/.test(
value
)
result = [
isPass,
isPass ? '' : '密码不少于8位数,包含数字、大小写英文字母、特殊字符'
]
return result
}
/**
* 校验ip地址
*/
export const isValidIp = (value) => {
return /^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$/.test(value)
}
el-form校验用法,拿密码校验举例
<template>
<el-form ref="form" :model="form" label-width="150px" :rules="rules">
<el-form-item label="账号:" prop="userName">
<el-input v-model="form.userName" />
</el-form-item>
<el-form-item label="密码:" prop="password">
<el-input type="password" v-model="form.password" required="true" />
</el-form-item>
</el-form>
</template>
<script>
import { isValidPassword} from '@/utils/validate'
export default {
name: 'test',
data() {
let passwordValid = (rule, value, callback) => {
const result = isValidPassword(value)
if (!result[0]) {
callback(new Error(result[1]))
} else {
callback()
}
}
return {
form: {
userName:'',
password: ''
},
rules: {
userName: [
{ required: true, message: '请输入用户账号', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
password: [
{
validator: passwordValid,
trigger: 'blur'
}
],
}
}
},
mounted() {
},
created() {},
methods: {
}
}
</script>
<style lang="scss" scoped>
</style>
其他校验补充
// 正整数校验
const reg = /^\d+$/;
// 非0开头的正整数校验
const reg = /^[1-9]\d*/;
// 负整数校验
const reg= /^-\d+$/;
// 整数校验
const reg = /^-?\d+$/;
// 1-99之间的数字校验
const reg = /^[1-9][0-9]{0,1}$/;
// 是否两位小数校验
const reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
// 最多一位小数校验
const reg = /^[0-9]+([.]{1}[0-9]{1})?$/;
// 纯数字校验
const reg = /^\d+$|^\d+[.]?\d+$/;
// 身份证校验
const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
// 包含英文数字下划线校验
const reg = /^[_a-zA-Z0-9]+$/;
// 只能由英文、数字、下划线
const reg = /^\w+$/;
// 中文校验
const chineseReg = /^[\u0391-\uFFE5A-Za-z]+$/;