vue之郵箱、密碼、手機(jī)號碼等輸入驗(yàn)證規(guī)則說明
vue郵箱、密碼、手機(jī)號碼等輸入驗(yàn)證規(guī)則
手機(jī)號
const checkPhone = (rule, value, callback) => { const phoneReg = /^1[34578]\d{9}$$/; if (!value) { return callback(new Error("電話號碼不能為空")); } setTimeout(() => { if (!Number.isInteger(+value)) { callback(new Error("請輸入數(shù)字值")); } else { if (phoneReg.test(value)) { callback(); } else { callback(new Error("電話號碼格式不正確")); } } }, 100); };
郵箱
const checkEmail = (rule, value, callback) => { const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/; if (!value) { return callback(new Error("郵箱不能為空")); } setTimeout(() => { if (mailReg.test(value)) { callback(); } else { callback(new Error("請輸入正確的郵箱格式")); } }, 100); };
密碼
var validatePass = (rule, value, callback) => { if (value === '') { callback(new Error('請?jiān)O(shè)置正確格式的密碼')); } else if(value.length < 6){ callback(new Error('密碼長度最小6位')); }else{ callback(); } };
調(diào)用:
<el-form :model="addForm" :label-position="labelPosition" :rules="addFormRules" ref="addFormRef" label-width="80px" > <el-form-item label="郵箱" prop="email"> <el-input v-model="addForm.email"></el-input> </el-form-item> <el-form-item label="手機(jī)" prop="phoneNumber"> <el-input v-model="addForm.phoneNumber"></el-input> </el-form-item> data() { return { addForm: {}, addFormRules: { email: [{ required: true, validator: checkEmail, trigger: "blur" }], phoneNumber: [{ required: false, message: "請輸入聯(lián)系方式", validator: checkPhone, trigger: "blur"}], } } }
全局驗(yàn)證規(guī)則腳本,需要的地方引入即可:
1.給頁面表單對象添加驗(yàn)證屬性
:rules=“registerRules” ref=“registerForm”
為el-form-item每個(gè)表單子項(xiàng)添加 prop 屬性, 例如
<el-form-item prop="username"> <el-input name="username" type="text" v-model="registerForm.username" placeholder="請?jiān)O(shè)置登錄用戶名"></el-input> </el-form-item>
rules是一個(gè)驗(yàn)證規(guī)則對象,因此需要在data()頁面數(shù)據(jù)里添加registerRules對象:
registerRules: { username: [{ required: true, trigger: 'blur', validator: validateUsername }], password: [{ required: true, trigger: 'blur', validator: validatePassword }], password_repeat: [{ required: true, trigger: 'blur', validator: this.validatePassRepeat }], bind_phone: [{ required: true, trigger: 'blur', validator: validatePhone }], realname: [{ required: true, trigger: 'blur', validator: validateRealName }], id_number: [{ required: true, trigger: 'blur', validator: validateIdNumber }] },
3.創(chuàng)建validate.js全局驗(yàn)證規(guī)則腳本,供頁面靈活引入
/* 驗(yàn)證賬號 */ export function validateUsername(rule, value, callback) { if (value.length < 6 || value.length > 20) { return callback(new Error('用戶名不得小于6個(gè)或大于20個(gè)字符!')) } else { callback() } } /* 驗(yàn)證密碼 */ export function validatePassword(rule, value, callback) { if (value.length < 6) { return callback(new Error('密碼不能小于6位')) } else { callback() } } /* 合法郵箱 */ export function validateEmail(rule, value, callback) { const emailReg = /^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})$/ if (!value) { return callback(new Error('郵箱不能為空!!')) } setTimeout(() => { if (!emailReg.test(value)) { return callback(new Error('郵箱格式錯(cuò)誤')) } else { callback() } }, 100) } /* 合法手機(jī)號 */ export function validatePhone(rule, value, callback) { const phoneReg = /^[1][3,4,5,7,8][0-9]{9}$/ if (!value) { return callback(new Error('手機(jī)號碼不能為空!!')) } setTimeout(() => { if (!phoneReg.test(value)) { return callback(new Error('手機(jī)號碼格式錯(cuò)誤')) } else { callback() } }, 100) } /* 合法真實(shí)姓名 */ export function validateRealName(rule, value, callback) { const realnameReg = /^([a-zA-Z0-9\u4e00-\u9fa5\·]{1,10})$/ if (!value) { return callback(new Error('真實(shí)姓名不能為空!!')) } setTimeout(() => { if (!realnameReg.test(value)) { return callback(new Error('您的真實(shí)姓名格式錯(cuò)誤,請輸入英文或漢字!')) } else { callback() } }, 100) } /* 合法身份證 */ export function validateIdNumber(rule, value, callback) { const idNumberReg = /^[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{3}([0-9]|X)$/ if (!value) { return callback(new Error('身份證號碼不能為空!!')) } setTimeout(() => { if (!idNumberReg.test(value)) { return callback(new Error('您的身份證號碼格式錯(cuò)誤!')) } else { callback() } }, 100) }
4.引入全局驗(yàn)證規(guī)則即可
import { validateUsername, validatePassword, validatePhone, validateRealName, validateIdNumber } from '../../utils/validate'
另外,大部分驗(yàn)證函數(shù)都是通過正則表達(dá)式來驗(yàn)證的,以下還有很多常見的正則式:
/* 合法的https或ftp地址 */ const urlregex = /^(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.,?'\\+&%$#=~_-]+))*$/ /* 小寫字母 */ const reg = /^[a-z]+$/ /* 大寫字母 * const reg = /^[A-Z]+$/ /* 大小寫字母*/ const reg = /^[A-Za-z]+$/
通過reg.test()函數(shù)判斷是否符合正則式:
/* 判斷str是否符合reg正則式,返回真或者假 */ reg.test(str)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
echarts設(shè)置tootip輪播切換展示(vue3搭配vue-echarts粘貼即用)
這篇文章主要為大家介紹了echarts設(shè)置tootip輪播切換展示效果,vue3搭配vue-echarts粘貼即用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2023-10-10記錄一個(gè)van-list不斷onLoad加載的坑及解決
這篇文章主要介紹了記錄一個(gè)van-list不斷onLoad加載的坑及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Vue使用pinia管理數(shù)據(jù)pinia持久化存儲問題
這篇文章主要介紹了Vue使用pinia管理數(shù)據(jù)pinia持久化存儲問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03在 Vue 項(xiàng)目中引入 tinymce 富文本編輯器的完整代碼
這篇文章主要介紹了在 Vue 項(xiàng)目中引入 tinymce 富文本編輯器的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05Vue手機(jī)號正則匹配姓名加密展示功能的實(shí)現(xiàn)
這篇文章主要介紹了Vue手機(jī)號正則匹配,姓名加密展示,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08vue3使用defineModel實(shí)現(xiàn)父子組件雙向綁定
這篇文章主要個(gè)給大家介紹了在vue3中使用defineModel進(jìn)行父子組件中的雙向綁定,文中通過代碼示例給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01