通過郵箱驗證學習正則

郵箱驗證的正則表達式非常多,我這裡給個最正宗的,代碼如下:

/^[a-z0-9]+([._\\\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/

解析:

最左和最右的兩個斜槓/是javascript的字面量寫法,表示不必轉義,這樣正則中的比如\\就不必寫成\\了

扔掉兩端的斜槓(這是屬於js的範疇)後,來看正則部分:

^[a-z0-9]+([._\\\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$

^表示一行開頭

[a-z0-9]表示一個數字字符或小寫英文字母

+表示之前的部分(即[a-z0-9])至少出現一次

這樣就規定了郵箱名必須以數字或字母開頭

([._\\\\-]*[a-z0-9])*中:

[._\\\\-]表示英文句點、下劃線、反斜槓、減號中的任意一個字符(因為減號在正則中有特殊含義,所以需要用-轉義)

*表示之前的部分出現任意次數(0次或多次)

所以小括號內的意思就是:一個英文字母,並且在這個英文字母前允許出現上述的四種字符,比如a -b \\c .--d這些都是合法的

小括號後面跟了一個*表示小括號內的模式可以出現任意次,這樣就規定了郵箱名內允許出現句點減號反斜下劃,但這些符號之後必須跟著英文字母

@我就不多講了,郵箱嘛~

([a-z0-9]+[-a-z0-9]*[a-z0-9]+.)

這裡可能有個錯誤,最後的句點前應該加一個反斜槓轉義,這樣才表示句點(其實前面4個符號那個地方寫標準點的話也應該轉義的,不過那裡是在中括號裡面,問題不大,但這裡就會錯掉了)。所以應該改成:

([a-z0-9]+[-a-z0-9]*[a-z0-9]+\\.)

小括號內表示的是以小寫字母開頭,以小寫字母加句點結尾,中間部分可以使小寫字母或減號(就是在匹配域名嘛)

{1,63}表示前面的部分重複至少1次至多63次,就是在匹配一級域名、二級域名……六十三級域名嘛

[a-z0-9]+$表示小寫字母至少出現一次後結尾(美元是結尾的意思),這裡是在匹配com net cn這種後綴

相關學習文章(搜索引擎搜索極客教程 可看到具體鏈接)

  1. Regexper 用於圖形化解釋正則匹配
  2. 驗證輸入框值的常用正則表達式
  3. 正則表達式30分鐘入門教程


分享到:


相關文章: