根據運行的環境,操作系統可以分為桌面操作系統,手機操作系統,服務器操作系統,嵌入式操作系統等。 完整的RFC 822標準中的正則表達式由于長度太長而效率低下且晦澀難懂. 幸運的是,RFC 822已被替換過兩次,當前的電子郵件地址規范為RFC5322. RFC 5322會生成正則表達式,如果您花幾分鐘時間進行研究,就可以理解它,并且對于實際使用而言是足夠有效的. 可以在頁面頂部找到符合RFC 5322標準的正則表達式電子郵件的正則表達式,但是使用的IP地址模式在Internet上浮動,其中包含允許任何無符號字節十進制值00的錯誤. 用點分隔的地址是非法的. 其余的似乎與RFC 5322語法一致,并通過多個測試使用grep -Po,包括案例域名,IP地址,錯誤名稱以及帶引號和不帶引號的帳戶名. 為了更正00IP模式下的錯誤,我們獲得了一個有效且相當快速的正則表達式. (為實際代碼而不是降低價格,請繪制渲染的版本. )(: [A-Z0-9#$%&'* + / = ^ _` {|}?-+(?!\ [A-Z0 -9#$%&!]'?* + /?= ^ _` {|}?-] +)* |“(?: [\ x01- \ X08 \ X0B \ X0C \ x0e- \ X1F \ X21 \ x23- \ x5b \ x5d- \ 0x7F部分] | \\ [\ x01- \ X09 \ X0B \ X0C \ x0e- \ 0x7F部分])*“)@(: (: (: [α-Z0-9](:? ???? [A-Z0-9-] * [A-Z0?-9])\)+ [A-Z0-9](: ?[A-Z0-9-] * [A-Z0-9 ])| \ [(:( :( 2(5'?[0-5] | [0-4] [0-9]])| 1 [0-9] [0-9] |. [1-9] [0-9]))\){3}(?:( 2(5 [0-5] | [0-4] [0-9])| 1 [0-9 ] [0-9] | [1-9] [0-9])| [A-Z0-9-] * [A-Z0-9]: (?: [\ x01- \ X08 \ X0B \ X0C \ x0e- \ X1F \ x21- \ X5A \ x53- \ 0x7F部分] | \\ [\ x01- \ X09 \ X0B \ X0C \ x0e- \ 0x7F部分])+)\])這是上述正則表達式的局限性狀態機圖,比正則表達式本身更清晰. Perl和PCRE中更復雜的模式(例如PHP中使用的正則表達式庫)可以正確地解析RFC5322. Python和C#可以做到相同,但是它們使用的語法與前兩者不同. 但是,如果您被迫使用許多較弱的模式匹配語言之一,那么最好使用真正的解析器. 同樣重要的是要理解,根據RFC進行驗證永遠不會告訴您該地址是否實際存在于所提供的域中,或者輸入該地址的人是否是其真實所有者. 人們已經以這種方式在郵件列表上簽署了其他人. 修復需要更高級的驗證,這涉及到將包含確認令牌的消息發送到該地址,這意味著該消息與該地址輸入在同一網頁上. 確認令牌是知道您有權訪問該人地址的唯一方法. 這就是為什么大多數郵件列表現在都使用此機制來確認注冊的原因. 畢竟,任何人都可以放下President@whitehouse.gov,甚至可以將其解析為合法的,但不太可能成為另一端的人. 對于PHP,您不應使用給定模式通過PHP驗證電子郵件地址. 正確的引用方式如下: 存在一些危險,即通常的用法和廣泛的草率編碼將為電子郵件地址建立事實上的標準. 記錄的官方標準更具限制性. 這并不比所有其他非RFC模式都好. 它甚至不足以處理RFC 822,更不用說RFC 5322了,但是是的. 如果您想花哨和學究,請實施一個完整的狀態引擎. 正則表達式只能用作基本過濾器. 正則表達式的問題是告訴某人其完全有效的電子郵件地址是無效的(誤報),因為從用戶的角度來看,正則表達式無法處理它只是不禮貌和不禮貌. 用于此目的的狀態引擎可以驗證或更正否則將被視為無效的電子郵件地址,因為它根據每個RFC分解電子郵件地址. 這可以帶來更愉快的體驗,例如,指定的電子郵件地址“ myemail @ address,com”無效. 您的意思是“ myemail@address.com”嗎?另請參閱驗證電子郵件地址電子郵件的正則表達式,包括評論. 或比較電子郵件地址以驗證正則表達式. Debuggex演示
|
溫馨提示:喜歡本站的話,請收藏一下本站!