imports System.Text.RegularExpressionsModule RegexUtilitIEs Function IsValIDEmail(strIn As String) As Boolean ' Return true if strIn is in valID e-mail format. Return Regex.IsMatch(strIn,_ "^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))" + _ "(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$") End FunctionEnd Module
這個範例可以解譯規則運算式模式^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,6}))$,其方式如下表所示。
模式 | 說明 |
---|---|
^ | 在字串開頭開始比對。 |
(?("") | 判斷第一個字元是否為引號。(?("")是交替建構的開頭。 |
((?("")("".+?""@) | 如果第一個字元是引號,則比對是否為開頭引號後面接著至少一個任何字元,之後再接著結尾引號。此字串應該以 @ 記號做為結束。 |
|(([0-9a-zA-Z] | 如果第一個字元不是引號,則比對任何字母字元 (從 a 到 z) 或任何數字字元 (從 0 到 9)。 |
(\.(?! \.)) | 如果下一個字元是句號,則相符。如果不是句號,則向右合樣下一個字元並繼續比對。(?!\.)是零寬度的右不合樣 (Negative Lookahead) 判斷提示,可防止電子郵件地址的本機部分出現兩個連續的句號。 |
|[-!#\$%&'\*\+/=\? \^`\{\}\|~\w] | 如果下一個字元不是句號,則比對任何文字字元或下列其中一個字元:-!#$%'*+=?^`{}|~。 |
((\.(?! \.))|[-!#\$%'\*\+/=\? \^`\{\}\|~\w])* | 比對交替模式 (句號後面接著非句號,或某個字元) 零次以上。 |
@ | 比對 @ 字元。 |
(?<=[0-9a-zA-Z]) | 如果位於 @ 字元前面的字元是 A 到 Z、a 到 z 或 0 到 9,則繼續比對。(?<=[0-9a-zA-Z])建構可定義零寬度的左合樣 (Positive Lookbehind) 判斷提示。 |
(?(\[) | 檢查 @ 後面的字元是否為左括號。 |
(\[(\d{1,3}\]) | 如果是左括號,則比對左括號後面是否接著 IP 位址 (四組 1 至 3 位數的數字,而每組數字均以句號隔開) 與右括號。 |
|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}) | 如果 @ 後面的字元不是左括號,則比對一個值為 A-Z、a-z 或 0-9 的字母字元,該字母字元後面接著零個或多個文字字元或連字號,再接著值為 A-Z、a-z 或 0-9 的英數字元,最後接著句號。這個模式可以重複一次或多次,而且後面應接著 2 至 6 個字母 (a-z、A-Z) 字元。規則運算式的這個部分是設計用來擷取網域名稱。 |
IsValIDEmail方法可以包含在規則運算式公用程式方法的程式庫中,或包含在應用程式類別中做為私用的靜態或執行個體方法。如果這個方法做為規則運算式程式庫中的靜態方法,則可以由如下的程式碼來呼叫:
VB
Public Class Application Public Shared Sub Main() Dim emailAddresses() As String = { "davID.jones@proseware.com","d.j@server1.proseware.com",_ "jones@ms1.proseware.com",21)">"j.@server1.proseware.com",21)">"j@proseware.com9",21)">"Js#internal@proseware.com",21)">"j_9@[129.126.118.1]",21)">"j..s@proseware.com",21)">"Js*@proseware.com",21)">"Js@proseware..com",21)">"Js@proseware.com9",21)">"j.s@server1.proseware.com" } For Each emailAddress As String In emailAddresses If RegexUtilitIEs.IsValIDEmail(emailAddress) Then Console.Writeline("ValID: {0}",emailAddress) Else Console.Writeline("InvalID: {0}",emailAddress) End If Next End SubEnd Class' The example displays the following output:' ValID: davID.jones@proseware.com' ValID: d.j@server1.proseware.com' ValID: jones@ms1.proseware.com' InvalID: j.@server1.proseware.com' InvalID: j@proseware.com9' ValID: Js#internal@proseware.com' ValID: j_9@[129.126.118.1]' InvalID: j..s@proseware.com' InvalID: Js*@proseware.com' InvalID: Js@proseware..com' InvalID: Js@proseware.com9' ValID: j.s@server1.proseware.com总结
以上是内存溢出为你收集整理的VB.NET 电子邮件格式验证范例全部内容,希望文章能够帮你解决VB.NET 电子邮件格式验证范例所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)