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