正則表達式 驗證郵件地址

不懂正則表達式,因此直接去網上搜現成的正在表達式,結果掉坑裏面了正則表達式

這個是網上找的表達式:服務器

^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-\w]*[0-9a-zA-Z])*\.)+[a-zA-Z]{2,9})$單元測試

[a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2})?學習

單元測試的時候沒問題,而後Tester跑case時發現「卡死」現象,兩個都會卡死測試

tester輸入是:sadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfassfasdfasdfasdfasdfasdfasdadfasdgaewegwegwegwedfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasspa

總共255個字符(別糾結沒限制輸入長度)server

因而想,仍是算了,本身摸索一下,百度百科郵件地址格式,他這樣子說的:文檔

一般電子郵件地址的格式爲:user@mail.server.name,其中 user 是收件人的用戶名,mail.server.name是收件人的電子郵件服務器名,它還能夠是域名或十進制數字表示的 IP 地址。字符串

也就是用戶名和服務器地址,而後用@隔開,而後下載了一個叫「DEELX正則引擎文檔」的文檔學習正則表達式寫法,文檔內容不多,看了基本語法以後,本身定義了匹配規則:域名

1.用戶名第一個字符必須是數字或字母,其餘用\w匹配,\w能夠匹配任何一個字母或者數字或者下劃線

2用戶名後必須是@符號

3.@符號後必須是數字或字母字符串,而後字符串能夠被小點符號分割,而且相鄰字符不能是兩個小點

一句話的說關鍵就是是服務器地址的匹配,將服務器地址拆分紅兩塊mail和.server.name,而後.server.name結構是重複的,可視爲小點開頭而後接數字或字母的重複結構,而後就很好寫表達式了:^[\da-zA-Z][\w]*@[\da-zA-z]+(\.[\da-zA-z]+){1,9}$

棕色:必須以數字或字母開頭

紅色:匹配任一一個\w

綠色:至少有一個數字或字符

淺青色:是一個子表達式,表示匹配以小點開始並以數字或字母結尾的字符串

紫色:淺青色這個子表達式至少匹配1個,而且最多匹配9個這樣的字符串,也就是前面說的重複的結構

而後測試,發現貌似還行

至於不能出現的特殊字符,八度後沒發現什麼有用信息,就沒考慮。

相關文章
相關標籤/搜索