摘要:手把手分析一個郵箱正則表達(dá)式正則這東西在很多人看來就是要背的記的東西很多,一串長的正則表達(dá)式看起來像看天書一樣的。
手把手分析一個郵箱正則表達(dá)式
正則這東西在很多人看來就是要背的記的東西很多,一串長的正則表達(dá)式看起來像看天書一樣的。
比如這樣的 :)
/^(^[1-9]d{7}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])d{3}$)|(^[1-9]d{5}[1-9]d{3}((0d)|(1[0-2]))(([0|1|2]d)|3[0-1])((d{4})|d{3}[Xx])$)$/
其實(shí)總的來說正則其實(shí)也沒那么復(fù)雜,可能是你用的頻率比較低加上短期記憶把這個東西從意識上復(fù)雜化了。
在進(jìn)入正題之前我們先做一個正則基礎(chǔ)知識快速掃盲。
一個完整的正則表達(dá)式的組成有幾大要素:基本結(jié)構(gòu) / / (兩個左斜杠,中間寫表達(dá)式)
匹配模式 / /g,m,u,s,i (匹配模式是寫在右邊左斜杠的后面,比如常用的g,代表的是全局匹配,其他的不贅述)
類,這個代表你想要匹配什么樣的字符串或數(shù)字或者符號,比如/[0-9]/g(全局條件下有一個數(shù)字就算匹配成功),中間的[0-9]就代表你要匹配的字符串,也就是類。除了[0-9],還有[a-z]、s、S、d、D等等
量詞,用花括號{}表示,支持一位或者兩位({n}、{n,}、{n, m})這幾種寫法都是可以的,如果只有一個n代表匹配幾次,如果n逗號代表至少匹配n次,n,m代表匹配最少n次最多匹配m次。
"231erwefsdf".replace(/[0-9]{2,4}/g, "q") // "qerwefsdf"
邊界, ^從最開始匹配,$從結(jié)尾匹配。b匹配一個單詞邊界,也就是指單詞和空格間的位置,如 erb可以匹配"hover" 中的 "er",但不能匹配 "verb" 中的 "er" B匹配非單詞邊界。如 erB能匹配 "verb" 中的 "er",但不能匹配 "hover" 中的 "er"
分組使用 (),作用是提取相匹配的字符串,使量詞作用于分組 比如 lalala{4}是把 a匹配了3次而不是單詞,如果希望作用于單詞,可以使用分組 (lalala){4}
// 分組一個常用的用法 一個分組按照從左往右的順序分為$1 $2 $3... 使用replace可以對分組進(jìn)行操作 "231 my name is hhh".replace(/([0-9]{2,4})/g, "$1 new add,") //"231 new add, my name is hhh"
//可以用1,2...來引用正則表達(dá)式從左往右的第n個表達(dá)式 //匹配日期格式,表達(dá)式中的1代表重復(fù)(-|/|.) var rgx =/d{4}(-|/|.)d{1,2}1d{1,2}/ rgx.test("2016-03-26") // true rgx.test("2016-03.26") // false
其他一些高級用法后面遇到了再講解~
步入正題,分析一個郵箱正則表達(dá)式 例子/^([a-zA-Z]|[0-9])(w|-)+@[a-zA-Z0-9]+.([a-zA-Z]{2,4})$/
當(dāng)我們看到正則第一印象是看他的分組,一般復(fù)雜的正則表達(dá)式都是由不同的分組組成
第一個分組內(nèi)容^([a-zA-Z]|[0-9])[a-zA-Z] : 匹配任意大小寫字符
| : 或判斷
^ : 從最開始進(jìn)行匹配
所以第一個括號的內(nèi)容就是,從最開始第一個字符匹配任意大小寫字符和數(shù)字,也就是郵箱第一個字符不能為符號
第二個分組內(nèi)容 (w|-)+w : 匹配包括下劃線的任何單詞字符。等價(jià)于“[A-Za-z0-9_]”
-: 任何符號需要匹配成字符串而忽略它真正的正則含義都需要加上 , + 為匹配加號字符串
+ : 匹配一次或者多次
由此可知,這個分組是用來匹配郵箱的用戶名的可以填入任何字符或者-號
第三部分 @[a-zA-Z0-9]+這一部分是匹配郵箱服務(wù)商的正則比如 @163這類的
第四部分.([a-zA-Z]{2,4})$. : 匹配字符點(diǎn)
{2, 4}: 將前一個類匹配2到4次
$ : 從最后開始匹配
這部分主要是用來匹配郵箱后面的 .com .cn之類的
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106209.html
摘要:日常代碼的開發(fā)中,大家都或多或少的碰到一些正則表達(dá)式,但有的朋友只是會用,或者大致明白,希望這篇對正則深入淺出的文章能夠讓大家有所收獲。主要可以干的事情有兩個,引用和反向引用,在一些稍微復(fù)雜的正則表達(dá)式里,我們常常會用到這些。 日常代碼的開發(fā)中,大家都或多或少的碰到一些正則表達(dá)式,但有的朋友只是會用,或者大致明白,希望這篇對正則深入淺出的文章能夠讓大家有所收獲。 基本語法 [xyz] ...
摘要:日常代碼的開發(fā)中,大家都或多或少的碰到一些正則表達(dá)式,但有的朋友只是會用,或者大致明白,希望這篇對正則深入淺出的文章能夠讓大家有所收獲。主要可以干的事情有兩個,引用和反向引用,在一些稍微復(fù)雜的正則表達(dá)式里,我們常常會用到這些。 日常代碼的開發(fā)中,大家都或多或少的碰到一些正則表達(dá)式,但有的朋友只是會用,或者大致明白,希望這篇對正則深入淺出的文章能夠讓大家有所收獲。 基本語法 [xyz] ...
摘要:日常代碼的開發(fā)中,大家都或多或少的碰到一些正則表達(dá)式,但有的朋友只是會用,或者大致明白,希望這篇對正則深入淺出的文章能夠讓大家有所收獲。主要可以干的事情有兩個,引用和反向引用,在一些稍微復(fù)雜的正則表達(dá)式里,我們常常會用到這些。 日常代碼的開發(fā)中,大家都或多或少的碰到一些正則表達(dá)式,但有的朋友只是會用,或者大致明白,希望這篇對正則深入淺出的文章能夠讓大家有所收獲。 基本語法 [xyz] ...
摘要:那些瑣碎的知識點(diǎn)作者記錄的的很奇特很難記的知識點(diǎn)。易錯知識點(diǎn)整理注意和的區(qū)別中和都是輸出的作用,但是兩者之間還是有細(xì)微的差別。今天手頭不忙,總結(jié)一下,分享過程中掌握的知識點(diǎn)。 深入理解 PHP 之:Nginx 與 FPM 的工作機(jī)制 這篇文章從 Nginx 與 FPM 的工作機(jī)制出發(fā),探討配置背后的原理,讓我們真正理解 Nginx 與 PHP 是如何協(xié)同工作的。 PHP 那些瑣碎的知識...
摘要:簡言在做用戶注冊時,常會用到郵箱郵件地址的正則表達(dá)式。另一個問題是郵件用戶名不能包括中文。以上為三胖對郵箱址正則表達(dá)式的理解和分析,如有不足請大家予以指正。郵件地址正則表達(dá)式度空間 簡言 在做用戶注冊時,常會用到郵箱/郵件地址的正則表達(dá)式。本文列舉了幾種方案,大家可以根據(jù)自己的項(xiàng)目情況,選擇最適合的方案。 showImg(https://segmentfault.com/img/rem...
閱讀 1528·2021-11-24 09:38
閱讀 3377·2021-11-18 10:02
閱讀 3267·2021-09-22 15:29
閱讀 2951·2021-09-22 15:15
閱讀 1055·2021-09-13 10:25
閱讀 1870·2021-08-17 10:13
閱讀 2003·2021-08-04 11:13
閱讀 1985·2019-08-30 15:54