摘要:簡(jiǎn)言在做用戶注冊(cè)時(shí),常會(huì)用到郵箱郵件地址的正則表達(dá)式。另一個(gè)問(wèn)題是郵件用戶名不能包括中文。以上為三胖對(duì)郵箱址正則表達(dá)式的理解和分析,如有不足請(qǐng)大家予以指正。郵件地址正則表達(dá)式度空間
簡(jiǎn)言
在做用戶注冊(cè)時(shí),常會(huì)用到郵箱/郵件地址的正則表達(dá)式。本文列舉了幾種方案,大家可以根據(jù)自己的項(xiàng)目情況,選擇最適合的方案。
方案1 (常用)規(guī)則定義如下:
以大寫(xiě)字母[A-Z]、小寫(xiě)字母[a-z]、數(shù)字[0-9]、下滑線[_]、減號(hào)[-]及點(diǎn)號(hào)[.]開(kāi)頭,并需要重復(fù)一次至多次[+]。
中間必須包括@符號(hào)。
@之后需要連接大寫(xiě)字母[A-Z]、小寫(xiě)字母[a-z]、數(shù)字[0-9]、下滑線[_]、減號(hào)[-]及點(diǎn)號(hào)[.],并需要重復(fù)一次至多次[+]。
結(jié)尾必須是點(diǎn)號(hào)[.]連接2至4位的大小寫(xiě)字母[A-Za-z]{2,4}。
利用以上規(guī)則給出如下正則表達(dá)式:
var pattern = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/;測(cè)試結(jié)果:
pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("[email protected]") = false; pattern.test("毛三胖@42du.cn") = false;
源碼及演示地址
方案1說(shuō)明方案1是最常用的郵件正則表達(dá)式驗(yàn)證方案,也適合大多數(shù)的應(yīng)用場(chǎng)景。從以上測(cè)試可以看出,該表達(dá)式不支持.online及.store結(jié)尾的域名。如需兼容這類(lèi)域名(大于4位),調(diào)整正則結(jié)尾{2,4}的限制部分即可(例:{2,8})。另一個(gè)問(wèn)題是郵件用戶名不能包括中文。
方案2 (修訂方案1)規(guī)則補(bǔ)充如下:
用戶名可以包括中文[u4e00-u9fa5]
域名結(jié)尾最長(zhǎng)可為8位{2,8}
更新后的正則表達(dá)式如下:
var pattern = /^([A-Za-z0-9_-.u4e00-u9fa5])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,8})$/;測(cè)試結(jié)果:
pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("毛三胖@42du.cn") = true;
源碼及演示地址
方案3 (安全)在手機(jī)驗(yàn)證碼出現(xiàn)之前,差不多郵箱驗(yàn)證是保證用戶唯一性的唯一條件。而臨時(shí)郵箱(也稱10分鐘郵箱或一次性郵箱)的出現(xiàn),則使得郵箱驗(yàn)證及帳戶激活這種機(jī)制失去了意義。而臨時(shí)郵箱的地址是不可枚舉的,我們只能才采取白名單的方式,只允許有限的郵箱域名通過(guò)驗(yàn)證。
根據(jù)方案1的補(bǔ)充如下規(guī)則:
郵箱域名只能是163.com,qq.com或者42du.cn。
給出正則表達(dá)式如下:
var pattern = /^([A-Za-z0-9_-.])+@(163.com|qq.com|42du.cn)$/;測(cè)試結(jié)果:
pattern.test("[email protected]") = true; pattern.test("[email protected]") = false; pattern.test("[email protected]") = true; pattern.test("[email protected]") = true; pattern.test("[email protected]") = false; pattern.test("毛三胖[email protected]") = false;
源碼及演示地址
方案3驗(yàn)證雖然能保證安全性,但是如果白名單太長(zhǎng)會(huì)造成模式字符串太長(zhǎng)。這時(shí)可以將郵箱域名白名單寫(xiě)成數(shù)組,利用正則表達(dá)式做初步驗(yàn)證,用白名單做域名的二次驗(yàn)證。
現(xiàn)給出郵箱驗(yàn)證函數(shù)如下:
var isEmail = function (val) { var pattern = /^([A-Za-z0-9_-.])+@([A-Za-z0-9_-.])+.([A-Za-z]{2,4})$/; var domains= ["qq.com","163.com","vip.163.com","263.net","yeah.net","sohu.com","sina.cn","sina.com","eyou.com","gmail.com","hotmail.com","42du.cn"]; if(pattern.test(val)) { var domain = val.substring(val.indexOf("@")+1); for(var i = 0; i< domains.length; i++) { if(domain == domains[i]) { return true; } } } return false; } // 輸出 true isEmail("[email protected]");
上述isEmail()函數(shù)列舉了常用的11種郵箱域名,大家可以根據(jù)需要適當(dāng)補(bǔ)充或刪減。
以上為三胖對(duì)郵箱址正則表達(dá)式的理解和分析,如有不足請(qǐng)大家予以指正。
郵件地址正則表達(dá)式-42度空間
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93358.html
摘要:在正則表達(dá)式中被稱為元字符,它可以匹配除回車(chē)換行行分隔符和段分隔符以外的所有字符。點(diǎn)擊查看其他元字符。想要實(shí)際查看兩種模式的區(qū)別,可以將上方匹配的正則表達(dá)式的去掉再執(zhí)行,看看返回結(jié)果有何不同。 判斷郵箱是否正確 郵箱正則 /w+[w.]*@[w.]+.w+/ 測(cè)試用例 const regex = /w+[w.]*@[w.]+.w+/ regex.test([email protected])...
摘要:能匹配中的,但不能匹配中的數(shù)量界定符符號(hào)定義是一個(gè)非負(fù)整數(shù)。則等價(jià)于和均為非負(fù)整數(shù),其中。該方法接受一個(gè)正則表達(dá)式作為它的第一個(gè)參數(shù)。是一個(gè)非強(qiáng)制異常類(lèi),它表示一個(gè)正則表達(dá)式模式中的語(yǔ)法錯(cuò)誤。 正則表達(dá)式及多語(yǔ)言操作指南 1. 正則表達(dá)式 正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)規(guī)則字符串,這個(gè)規(guī)則字符串用來(lái)表達(dá)對(duì)字符串的一...
摘要:能匹配中的,但不能匹配中的數(shù)量界定符符號(hào)定義是一個(gè)非負(fù)整數(shù)。則等價(jià)于和均為非負(fù)整數(shù),其中。該方法接受一個(gè)正則表達(dá)式作為它的第一個(gè)參數(shù)。是一個(gè)非強(qiáng)制異常類(lèi),它表示一個(gè)正則表達(dá)式模式中的語(yǔ)法錯(cuò)誤。 正則表達(dá)式及多語(yǔ)言操作指南 1. 正則表達(dá)式 正則表達(dá)式是對(duì)字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)規(guī)則字符串,這個(gè)規(guī)則字符串用來(lái)表達(dá)對(duì)字符串的一...
摘要:第三階段常見(jiàn)對(duì)象的學(xué)習(xí)正則表達(dá)式一正則表達(dá)式概述簡(jiǎn)單概述就是符合一定規(guī)則的字符串常見(jiàn)規(guī)則字符字符。舉例表示字符反斜線字符。 第三階段 JAVA常見(jiàn)對(duì)象的學(xué)習(xí) 正則表達(dá)式 (一) 正則表達(dá)式概述 (1) 簡(jiǎn)單概述 就是符合一定規(guī)則的字符串、 (2) 常見(jiàn)規(guī)則 A:字符 x 字符 x。舉例:a表示字符a 反斜線字符。 新行(換行)符 (u000A) 回車(chē)符 (u000D) ...
摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書(shū)問(wèn)世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫(xiě),作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語(yǔ)言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來(lái)查找特定的信息(搜索),也可以用來(lái)查...
閱讀 2076·2019-08-30 15:53
閱讀 3073·2019-08-30 15:44
閱讀 2920·2019-08-30 14:11
閱讀 2916·2019-08-30 14:01
閱讀 2705·2019-08-29 15:16
閱讀 3751·2019-08-29 13:10
閱讀 1249·2019-08-29 10:56
閱讀 2532·2019-08-26 13:58