vue中的el-form表單rule校驗問題(特殊字符、中文、數(shù)字等)
el-form表單rule校驗(特殊字符、中文、數(shù)字等)
element-UI中el-form帶有檢驗功能,用法如下:
<template> ? ? <div> ? ? ? ? <el-form size="small" ref="userform" :rules="rulesForm" :model="form"> ? ? ? ? ? ? <el-form-item label="用戶名" prop="userName"> ? ? ? ? ? ? ? ? <el-input v-model.trim="form.userName" ?:disabled="addUserDialogTitle == '編輯用戶'"></el-input> ? ? ? ? ? ? </el-form-item> ? ? ? ? ? ? <el-form-item label="聯(lián)系方式" prop="phone"> ? ? ? ? ? ? ? ? <el-input v-model.number="form.phone"></el-input> ? ? ? ? ? ? </el-form-item> ? ? ? ? ? ? <el-form-item> ? ? ? ? ? ? ? ? <el-button type="primary" @click="onSubmit">立即創(chuàng)建</el-button> ? ? ? ? ? ? </el-form-item> ? ? ? ? </el-form> ? ? </div> </template> <script> import { checkSpecialKey,validateInputPhone } from '@/api/check' export default { ? ? name: 'userList', ? ? data () { ? ? ? ? let validateInputSpecialKey = (rule, value, callback) => { ? ? ? ? ? ? if (!checkSpecialKey(value)) { ? ? ? ? ? ? ? ? callback(new Error("不能含有特殊字符?。?)); ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? callback(); ? ? ? ? ? ? } ? ? ? ? }; ? ? ? ? let validateInputPhone = (rule, value, callback) => { ? ? ? ? ? ? if (!checkPhone(value)) { ? ? ? ? ? ? ? ? callback(new Error("請正確輸入聯(lián)系方式!!")); ? ? ? ? ? ? } else { ? ? ? ? ? ? ? ? callback(); ? ? ? ? ? ? } ? ? ? ? }; ? ? ? ? return { ? ? ? ? ? ? form:{}, ? ? ? ? ? ? rulesForm: {//彈窗輸入框檢驗 ? ? ? ? ? ? ? ? userName: [ ? ? ? ? ? ? ? ? ? { required: true,message: "請輸入用戶名",trigger: "blur"}, ? ? ? ? ? ? ? ? ? { min: 3,max: 10,message: "長度在 3 - 10 字符" }, ? ? ? ? ? ? ? ? ? { validator: validateInputSpecialKey, trigger: "blur" } ? ? ? ? ? ? ? ? ], ? ? ? ? ? ? ? ? phone:[ ? ? ? ? ? ? ? ? ? { required: true,message: "請輸入聯(lián)系方式",trigger: "blur"}, ? ? ? ? ? ? ? ? ? { validator: validateInputPhone, trigger: "blur" } ? ? ? ? ? ? ? ? ] ? ? ? ? ? ? } ? ? ? ? } ? ? }, ? ? methods:{ ? ? ? ? //提交表單 ? ? ? ? onSubmit(){ ? ? ? ? ? ? this.$refs['userform'].validate((valid) => { ? ? ? ? ? ? ? ? if (valid) { ? ? ? ? ? ? ? ? ? ? //TODO 調(diào)用接口提交數(shù)據(jù) ? ? ? ? ? ? ? ? }else{ ? ? ? ? ? ? ? ? ? ? return false ? ? ? ? ? ? ? ? } ? ? ? ? ? ? }) ? ? ? ? } ? ? } } </script>
校驗方法有
校驗是否包含特殊字符
export function checkSpecialKey(str) { ? ? let specialKey = ? ? "[`~!#$^&*()=|{}':;'\\[\\].<>/?~!#¥……&*()——|{}【】‘;:”“'。,、?]‘'"; ? ? for (let i = 0; i < str.length; i++) { ? ? ? ? if (specialKey.indexOf(str.substr(i, 1)) != -1) { ? ? ? ? return false; ? ? ? ? } ? ? } ? ? return true; }
校驗是否包含特殊字符(路徑專用)
export function checkSpecialKeyPath(str) { ? ? let specialKey = ? ? "[`~!#$^&*()=|{}';'<>?~!#¥……&*()——|{}【】‘;”“'。,、?]‘'"; ? ? for (let i = 0; i < str.length; i++) { ? ? ? ? if (specialKey.indexOf(str.substr(i, 1)) != -1) { ? ? ? ? return false; ? ? ? ? } ? ? } ? ? return true; }
校驗是否包含中文
export function checkChinese(val) { ? ? // 正則匹配非中英文及數(shù)字的字符 ? ? let reg = /[\u4e00-\u9fa5]/; ? ? let n = reg.test(val); ? ? if ( n ) { ? ? ? ? return false ? ? } ? ? return true }
校驗是否手機號碼或者固話
export function checkPhone(val) { ? ? let reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/; ? ? let n = reg.test(val); ? ? if ( !n ) { ? ? ? ? return false ? ? } ? ? return true }
校驗密碼是否合格
export function checkPassword(val) { ? ? let reg = /^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/; ? ? let n = reg.test(val); ? ? if ( !n ) { ? ? ? ? return false ? ? } ? ? return true }
校驗非負浮點數(shù)
export function checkNumberNotNegative(val) { ? ? let reg = /^\d+(\.\d+)?$/; ? ? let n = reg.test(val); ? ? if ( !n ) { ? ? ? ? return false ? ? } ? ? return true }
vue中rules表單驗證(常用)
首先在表單中綁定rules,并在item中定義屬性prop:
<el-form :model="ruleForm" :rules="rules" ref="ruleForm"> ? <el-form-item label="活動名稱" prop="name"> ? ? <el-input v-model="ruleForm.name"></el-input> ? </el-form-item> </el-form>
在data或computed中編寫rules規(guī)則:
rules {?? ? ? ? ? name: [ { type: 'string',required: true,message: "名稱必填", trigger: 'blur'}, {max: 30,message: "名稱長度不能超過30位" }] ? ? ? }
其中name為prop名
type
:類型required
:是否必選項(此欄是否為空)message
:報錯信息trigger
:觸發(fā)方式(blur
:失去焦點時進行驗證- 常用:對 input 輸入框的驗證
change
:當值發(fā)生變化時進行驗證- 常用:下拉框select,日期選擇框date-picker,復選框checkbox,單選框radio)
也可以直接用pattern進行匹配驗證
name: [ { pattern: 驗證條件, required: true, message: "提示信息", trigger: "blur" }]
vue rules中自帶的校驗規(guī)則和常用正則表達式校驗
rules: { ? ? //驗證非空和長度 ? ? name: [{ ? ? ? ? required: true, ? ? ? ? message: "站點名稱不能為空", ? ? ? ? trigger: "blur" ? ? ? ? },{ ? ? ? ? min: 3,? ? ? ? ? max: 5,? ? ? ? ? message: '長度在 3 到 5 個字符',? ? ? ? ? trigger: 'blur'? ? ? }], ? ? //驗證數(shù)值 ? ? age: [{? ? ? ? ? type: 'number',? ? ? ? ? message: '年齡必須為數(shù)字值', ? ? ? ? trigger: "blur" ? ? }], ? ? //驗證日期 ? ? birthday:[{? ? ? ? ? type: 'date',? ? ? ? ? required: true,? ? ? ? ? message: '請選擇日期',? ? ? ? ? trigger: 'change'? ? ? }], ? ? //驗證多選 ? ? habit: [{? ? ? ? ? type: 'array',? ? ? ? ? required: true,? ? ? ? ? message: '請至少選擇一個愛好',? ? ? ? ? trigger: 'change'? ? ? }], ? ? //驗證郵箱 ? ? email: [{? ? ? ? ? type: 'email',? ? ? ? ? message: '請輸入正確的郵箱地址',? ? ? ? ? trigger: ['blur', 'change']? ? ? }], ? ? // 驗證手機號 ? ? telephone: [{ ? ? ? ? pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, ? ? ? ? message: "請輸入正確的手機號碼", ? ? ? ? trigger: "blur" ? ? }], ? ? // 驗證經(jīng)度 整數(shù)部分為0-180小數(shù)部分為0到7位 ? ? longitude: [{ ? ? ? ? pattern: /^(\-|\+)?(((\d|[1-9]\d|1[0-7]\d|0{1,3})\.\d{0,7})|(\d|[1-9]\d|1[0-7]\d|0{1,3})|180\.0{0,6}|180)$/, ? ? ? ? message: "整數(shù)部分為0-180,小數(shù)部分為0到7位", ? ? ? ? trigger: "blur" ? ? }], ? ? // 驗證維度 整數(shù)部分為0-90小數(shù)部分為0到7位 ? ? latitude: [{ ? ? ? ? pattern: /^(\-|\+)?([0-8]?\d{1}\.\d{0,7}|90\.0{0,6}|[0-8]?\d{1}|90)$/, ? ? ? ? message: "整數(shù)部分為0-90,小數(shù)部分為0到7位", ? ? ? ? trigger: "blur" ? ? }] ? ? ? ? ? }
前端Vue中常用rules校驗規(guī)則
1、是否合法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])$/,
2.是否手機號碼或者固話
pattern:/^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/,
3. 是否身份證號碼
pattern:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
4.是否郵箱
pattern:/^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/,
5.整數(shù)填寫
pattern:/^-?[1-9]\d*$/,
6.正整數(shù)填寫
pattern:/^[1-9]\d*$/,
7.小寫字母
pattern:/^[a-z]+$/,
8.大寫字母
pattern:/^[A-Z]+$/,
9.大小寫混合
pattern:/^[A-Za-z]+$/,
10.多個8位數(shù)字格式(yyyyMMdd)并以逗號隔開
pattern:/^\d{8}(\,\d{8})*$/,
11.數(shù)字加英文,不包含特殊字符
pattern:/^[a-zA-Z0-9]+$/,
12.前兩位是數(shù)字后一位是英文
pattern:/^\d{2}[a-zA-Z]+$/,
13.密碼校驗(6-20位英文字母、數(shù)字或者符號(除空格),且字母、數(shù)字和標點符號至少包含兩種)
pattern:/^(?![\d]+$)(?![a-zA-Z]+$)(?![^\da-zA-Z]+$)([^\u4e00-\u9fa5\s]){6,20}$/,
14.中文校驗
pattern:/^[\u0391-\uFFE5A-Za-z]+$/,
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue-element-admin+flask實現(xiàn)數(shù)據(jù)查詢項目的實例代碼
這篇文章主要介紹了vue-element-admin+flask實現(xiàn)數(shù)據(jù)查詢項目,填寫數(shù)據(jù)庫連接信息和查詢語句,即可展示查詢到的數(shù)據(jù),需要的朋友可以參考下2022-11-11