element-ui表單驗證:用戶名、密碼、電話、郵箱

之前設計login組件時增加了簡單的表單驗證,因此對應的users組件,添加用戶功能也必須設置相應的驗證規則。

在這里插入圖片描述
文檔form表單驗證只提供了用戶名/密碼,是否必須/長度限制的驗證。對于電話、郵箱和地址的驗證如下:

html部分,先綁定props

<el-form-item label="郵箱" prop="email"
:label-width="formLabelWidth"><el-input v-model="form.email" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="手機" prop="mobile"
:label-width="formLabelWidth"><el-input v-model="form.mobile" autocomplete="off"></el-input>
</el-form-item>

js部分,在data內的return之前

  data () {const checkPhone = (rule, value, callback) => {const phoneReg = /^1[3|4|5|7|8|9][0-9]{9}$/if (!value) {return callback(new Error('電話號碼不能為空'))}setTimeout(() => {// Number.isInteger是es6驗證數字是否為整數的方法,但是我實際用的時候輸入的數字總是識別成字符串// 所以我就在前面加了一個+實現隱式轉換if (!Number.isInteger(+value)) {callback(new Error('請輸入數字值'))} else {if (phoneReg.test(value)) {callback()} else {callback(new Error('電話號碼格式/長度不正確'))}}}, 100)}var 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)}rules: {mobile: [{ validator: checkPhone, trigger: 'blur', required: true }],email: [{ validator: checkEmail, trigger: 'blur', required: true }]}}

實現效果如下:
在這里插入圖片描述
一些常用的正則:

  1 JS的正則表達式2 3 強:字母+數字+特殊字符&nbsp;4 &nbsp;^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&*]+$)(?![\d!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$5 &nbsp;&nbsp;&nbsp;6 &nbsp;&nbsp;&nbsp;&nbsp;7 中:字母+數字,字母+特殊字符,數字+特殊字符8 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&*]+$)[a-zA-Z\d!@#$%^&*]+$9 10 弱:純數字,純字母,純特殊字符11 ^(?:\d+|[a-zA-Z]+|[!@#$%^&*]+)$12 13 14 //校驗是否全由數字組成15 16 function isDigit(s)17 {18 var patrn=/^[0-9]{1,20}$/;19 if (!patrn.exec(s)) return false20 return true21 }22 23 //校驗登錄名:只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串24 function isRegisterUserName(s)  25 {  26 var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;  27 if (!patrn.exec(s)) return false28 return true29 }30 31 function isRegisterUserName(s)32 {33 var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;34 if (!patrn.exec(s)) return false35 return true36 }37 38 39 //校驗用戶姓名:只能輸入1-30個以字母開頭的字串40 Javascript代碼41 function isTrueName(s)  42 {  43 var patrn=/^[a-zA-Z]{1,30}$/;  44 if (!patrn.exec(s)) return false45 return true46 }  47 }}  48 49 //校驗密碼:只能輸入6-20個字母、數字、下劃線  50 function isPasswd(s)  51 {  52 var patrn=/^(\w){6,20}$/;  53 if (!patrn.exec(s)) return false54 return true55 }  56 57 //校驗普通電話、傳真號碼:可以“+”開頭,除數字外,可含有“-”  58 function isTel(s)  59 {  60 //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;  61 var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;  62 if (!patrn.exec(s)) return false63 return true64 }  65 66 //校驗手機號碼:必須以數字開頭,除數字外,可含有“-”  67 function isMobil(s)  68 {  69 var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;  70 if (!patrn.exec(s)) return false71 return true72 }  73 74 //校驗郵政編碼  75 function isPostalCode(s)  76 {  77 //var patrn=/^[a-zA-Z0-9]{3,12}$/;  78 var patrn=/^[a-zA-Z0-9 ]{3,12}$/;  79 if (!patrn.exec(s)) return false80 return true81 }  82 83 //校驗搜索關鍵字  84 function isSearch(s)  85 {  86 var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\]  87         [\]\{\}:;'\,.<>?]{0,19}$/;  88 if (!patrn.exec(s)) return false89 return true90 }  91 92 function isIP(s) //by zergling  93 {  94 var patrn=/^[0-9.]{1,20}$/;  95 if (!patrn.exec(s)) return false96 return true97 }  98 99 正則表達式
100 ^\\d+$  //非負整數(正整數 + 0)  
101 ^[0-9]*[1-9][0-9]*$  //正整數   
102 ^((-\\d+)|(0+))$  //非正整數(負整數 + 0)   
103 ^-[0-9]*[1-9][0-9]*$  //負整數   
104 ^-?\\d+$    //整數   
105 ^\\d+(  //非負浮點數(正浮點數 + 0)   
106 ^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$   
107 //正浮點數   
108 ^((-\\d+(  //非正浮點數(負浮點數 + 0)   
109 ^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  
110 //負浮點數   
111 ^(-?\\d+)(  //浮點數   
112 ^[A-Za-z]+$  //由26個英文字母組成的字符串   
113 ^[A-Z]+$  //由26個英文字母的大寫組成的字符串   
114 ^[a-z]+$  //由26個英文字母的小寫組成的字符串   
115 ^[A-Za-z0-9]+$  //由數字和26個英文字母組成的字符串   
116 ^\\w+$  //由數字、26個英文字母或者下劃線組成的字符串   
117 ^[\\w-]+(    //email地址   
118 ^[a-zA-z]+://(  //url  
119 ^[A-Za-z0-9_]*$
120 
121 匹配完整域名的正則表達式:
122 [a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\.?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/251372.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/251372.shtml
英文地址,請注明出處:http://en.pswp.cn/news/251372.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

composer(作曲家)安裝php-ml

剛開始我用的是up5.6版本php命令安裝composer 后來使用composer時發現命令行會提示php版本太低 于是我下載了wamp&#xff0c;使用7.1版本的php重新安裝了composer&#xff0c;因為php-ml要求必須是7.1版本 在安裝的時候有一些問題&#xff0c;那就是安裝不成功&#xff0c;并沒…

前端解析返回的對象時json顯示$ref問題的解決

在mapper中寫的語句&#xff0c;結果集中association&#xff0c;采用的一個對象&#xff0c;整個list列表中每個元素有一個對象元素&#xff0c;如果第二個元素中有一個與第一個元素中對象同名的&#xff0c;就會去引用上一個元素的地址&#xff0c;在json前臺解析的時候就不會…

Uncaught TypeError: Cannot redefine property: $router

原因&#xff1a;就如報錯提示所描述的&#xff0c;不能重新定義router&#xff0c;說明是重復定了router&#xff0c;說明是重復定了router&#xff0c;說明是重復定了router。通常是因為在項目中安裝了vue-router的依賴并且用Vue.use()使用了vue-router&#xff0c;還在index…

微信小程序模仿開眼視頻app(一)——視頻首頁、視頻詳情、分類

可到我的github賬號上去copy文件 先展示一下我實現了的功能吧 提示&#xff0c;如果有出現無法加載域名之類問題的的&#xff0c;可以在“設置”-“項目設置”-打鉤“不校驗合法域名……”&#xff1b; 或者直接登錄自己的微信小程序后臺設置域名信息 首頁部分&#xff1a; 1…

es6 --- Thunkify源碼分析

首先看一個例子:讀取package.json下的文件,并將讀取的數據(若讀取失敗)打印出來 // 導入fs和thunkify模塊 var thunkify require(thunkify); var fs require(fs);// 定義讀取文件的函數read var read thunkify(fs.readFile);// 調用read函數讀取package.json下的文件.并對數…

(轉)C# WebApi 身份認證解決方案:Basic基礎認證

原文地址&#xff1a;http://www.cnblogs.com/landeanfen/p/5287064.html 閱讀目錄 一、為什么需要身份認證二、Basic基礎認證的原理解析 1、常見的認證方式2、Basic基礎認證原理三、Basic基礎認證的代碼示例 1、登錄過程2、/Home/Index主界面3、WebApiCORS驗證部分&#xff08…

commit之后,想撤銷commit

git reset --soft HEAD^轉載于:https://www.cnblogs.com/gjack/p/9271556.html

ZNZD平臺vue項目

一、安裝配置node.js 1.1 配置企業級軟件倉庫 1&#xff09;首先用的是Nexus Repository Manager搭建npm私服&#xff1b;&#xff08;待補充&#xff09; 2&#xff09;項目使用修改.npmrc文件來修改源 現在需要做的就是修改源&#xff01;采取配置npmrc文件的方式&#x…

微信小程序模仿開眼視頻app(二)——搜索功能

微信小程序模仿開眼視頻app&#xff08;一&#xff09;有介紹首頁、視頻詳情和分類部分 可到我的github賬號上去copy文件 搜索部分 一開始沒想要設置歷史記錄啊、熱門搜索啊這些的&#xff0c;只是想把搜索框弄好看一點&#xff0c;無意中發現了微信官方ui庫&#xff1a;weu…

es6 --- Thunk函數的作用

首先了解一下javascript里面的Thunk函數的含義:將多參數函數,替換成一個只接受回調函數作為參數的單參數函數 // 一個具體的例子// 正常版本的readFile(多參數函數) fs.readFile(filename, callback);// Thunk版本的readFile(單參數版本) var Thunk function (fileName) {ret…

設計模式(六)------設計模式六大原則(5):迪米特法則

轉載自&#xff1a;http://www.jianshu.com/p/14589fb6978e &#xff08;作者簡書&#xff1a;涅槃1992&#xff09; 揭秘迪米特法則 迪米特法則&#xff08;Law of demeter,縮寫是LOD&#xff09;要求&#xff1a;一個對象應該對其他對象保持最少了解&#xff0c; 通縮的講就是…

http://www.cda.cn/view/25735.html

通過實例淺析Python對比C語言的編程思想差異 我一直使用 Python&#xff0c;用它處理各種數據科學項目。 Python 以易用聞名。有編碼經驗者學習數天就能上手&#xff08;或有效使用它&#xff09;。 聽起來很不錯&#xff0c;不過&#xff0c;如果你既用 Python&#xff0c;同時…

前端知識點梳理(一)

一、HTML 1. meta標簽 記住2個屬性&#xff1a;name和http-equiv name&#xff1a;描述網頁 <meta name"參數" content"具體的描述">http-equiv&#xff1a;文件頭 HTML中的meta標簽及其使用方法 二、CSS 1. css實現水平居中的幾種方式 css實…

Babel 7 基礎入門學習(詳細版)

可以在我的GitHub上下載示例代碼。 前言 之前一直想要系統的學習一下Babel的使用規則&#xff0c;看過阮一峰老師的《Babel基礎入門》&#xff0c;無奈此教程是2016年出的&#xff0c;而Babel 7都已經出來啦&#xff0c;于是&#xff0c;在搜集了各種資料后&#xff0c;關于…

JS的DOM操作

1.DOM節點 &#xff08;1&#xff09;node.offsetParent最近的有定位屬性的祖先節點 如果祖先節點都沒有定位&#xff0c;那么默認為body &#xff08;2&#xff09;node.offsetLeft/node.offsetTop 距離最近的有定位屬性的祖先節點的距離 node.offsetLeft左外邊框到定位父級的…

Kubernetes學習之路(四)之Node節點二進制部署

K8S Node節點部署 1、部署kubelet &#xff08;1&#xff09;二進制包準備 [rootlinux-node1 ~]# cd /usr/local/src/kubernetes/server/bin/ [rootlinux-node1 bin]# cp kubelet kube-proxy /opt/kubernetes/bin/ [rootlinux-node1 bin]# scp kubelet kube-proxy 192.168.56.1…

前端知識點梳理(二)

1.內核 瀏覽器內核&#xff08;Rendering Engine&#xff09;最初分為&#xff1a;渲染引擎&#xff08;layout engineer&#xff09;或&#xff08;Rendering Engine&#xff09;和js引擎&#xff1b;后來 JS 引擎越來越獨立&#xff0c;內核就傾向于單指渲染引擎。瀏覽器she…

微信小程序模仿開眼視頻app(三)——信息卡片瀑布流和分類

《微信小程序模仿開眼視頻app&#xff08;一&#xff09;——視頻首頁、視頻詳情、分類》 《微信小程序模仿開眼視頻app&#xff08;二&#xff09;——搜索功能》 可到我的github賬號上去copy文件 瀑布流部分 文件代碼提示的挺詳細的&#xff0c;這里主要點一下 社區與分類…

PHP后臺代碼解決跨域問題

在前端里面&#xff0c;解決跨域的時候總顯得那么的惡心&#xff0c;什么jsonp啊&#xff0c;ajax啊&#xff0c;CORS啊什么的&#xff0c;總覺得是在鉆空子進行跨域&#xff0c;其實在PHP文件里面只需要加一段代碼就可以跨域了&#xff0c;前端你該怎么寫還是怎么寫&#xff0…

javascript --- typeof方法和instanceof方法

ES5中: 原始類型包括:Number、String、Boolean、Null、Undefined 原始封裝類型包括:Number、String、Boolean 引用類型包括:Array、Function、RegExp、Error、Date、Error 變量對象 原始類型的實例成為原始值,它直接保存在變量對象中. 引用類型的實例成為引用值,它作為一個指針…