मैंने एएसपी.NET सत्यापन नियंत्रण के साथ एक वैध ईमेल अभिव्यक्ति के परीक्षण के लिए निम्नलिखित दोनों नियमित अभिव्यक्तियों का उपयोग किया है। मैं सोच रहा था कि प्रदर्शन दृष्टिकोण से बेहतर अभिव्यक्ति कौन सा है, या यदि कोई बेहतर है।एएसपी.NET 3.5 सत्यापन के साथ ईमेल प्रारूप सत्यापन के लिए सर्वश्रेष्ठ नियमित अभिव्यक्ति
- \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* - ^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$
मैं "तेजी से धीमी गति से अभिव्यक्ति" BCL Team Blog पर वर्णित समस्या से बचने की कोशिश कर रहा हूँ।
अद्यतन
प्रतिक्रिया के आधार पर मैं एक ईमेल मान्य है अगर परीक्षण करने के लिए एक समारोह बना दी:
Public Function IsValidEmail(ByVal emailString As String, Optional ByVal isRequired As Boolean = False) As Boolean
Dim emailSplit As String()
Dim isValid As Boolean = True
Dim localPart As String = String.Empty
Dim domainPart As String = String.Empty
Dim domainSplit As String()
Dim tld As String
If emailString.Length >= 80 Then
isValid = False
ElseIf emailString.Length > 0 And emailString.Length < 6 Then
'Email is too short
isValid = False
ElseIf emailString.Length > 0 Then
'Email is optional, only test value if provided
emailSplit = emailString.Split(CChar("@"))
If emailSplit.Count <> 2 Then
'Only 1 @ should exist
isValid = False
Else
localPart = emailSplit(0)
domainPart = emailSplit(1)
End If
If isValid = False OrElse domainPart.Contains(".") = False Then
'Needs at least 1 period after @
isValid = False
Else
'Test Local-Part Length and Characters
If localPart.Length > 64 OrElse ValidateString(localPart, ValidateTests.EmailLocalPartSafeChars) = False OrElse _
localPart.StartsWith(".") OrElse localPart.EndsWith(".") OrElse localPart.Contains("..") Then
isValid = False
End If
'Validate Domain Name Portion of email address
If isValid = False OrElse _
ValidateString(domainPart, ValidateTests.HostNameChars) = False OrElse _
domainPart.StartsWith("-") OrElse domainPart.StartsWith(".") OrElse domainPart.Contains("..") Then
isValid = False
Else
domainSplit = domainPart.Split(CChar("."))
tld = domainSplit(UBound(domainSplit))
' Top Level Domains must be at least two characters
If tld.Length < 2 Then
isValid = False
End If
End If
End If
Else
'If no value is passed review if required
If isRequired = True Then
isValid = False
Else
isValid = True
End If
End If
Return isValid
End Function
नोट्स:
- IsValidEmail अनुमति पात्रों के बारे में अधिक प्रतिबंधात्मक है फिर आरएफसी, लेकिन यह उन पात्रों के सभी संभावित अमान्य उपयोगों के लिए परीक्षण नहीं करता है
संभव डुप्लिकेट (http में ईमेल सत्यापन के लिए इस नियमित अभिव्यक्ति का प्रयोग करें .com/प्रश्न/16167983/सर्वोत्तम-नियमित-अभिव्यक्ति-ईमेल-सत्यापन-इन-सी-तेज) – Milad