مشاركة عبر


كيفية القيام بما يلي: تحقق من ان السلاسل مكونه من تنسيق البريد الإلكتروني

يتحقق المثال التالي من أن سلسلة بتنسيق البريد إلكتروني صالحة.

مثال

يعرف المثال الأسلوب IsValidEmail والتي تقوم بإرجاع true إذا كانت السلسلة تتضمن بريد إلكتروني صالح و false إذا لم تتضمن واحداً، ولكنها لا تأخذ أي إجراء اخر. للتحقق من صلاحية عنوان البريد الإلكتروني، استدعي الأسلوب Regex.IsMatch(String, String) للتحقق من العنوان الذي يتوافق مع نمط التعبير العادي. يمكنك استخدام IsValidEmail لفلترة عناوين البريد الإلكتروني التي تحتوي على أحرف غير صالحة قبل أن يقوم تطبيقك بتخزين العناوين في قاعدة بيانات أو عرضها في صفحة ASP.NET.

لاحظ أن الأسلوب IsValidEmail لا يقوم بتنفيذ مصادقة للتحقق من صحة عنوان البريد الإلكتروني. فهو يحدد تقريباً ما إذا كان تنسيقها صالحاً أم لا لعنوان بريد إلكتروني.

Imports System.Text.RegularExpressions

Module 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 Function
End Module
using System;
using System.Text.RegularExpressions;

public class RegexUtilities
{
   public static bool IsValidEmail(string strIn)
   {
       // 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}))$"); 
   }
}

في هذا المثال، العادية تعبير نقش ^(?("")("".+?""@)|(([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}))$ can be interpreted as shown in the following table.

النمط

الوصف

^

تبدأ التطابق في بداية السلسلة.

(?("")

تحديد ما إذا كان الحرف أول هو على علامة اقتباس. (?("")هو بداية على بناء alternation.

((?("")("".+?""@)

إذا كان الحرف أول هو علامة اقتباس وتطابق علامة اقتباس لبداية متبوعاً بتواجد واحد على الأقل لأي حرف متبوعاً بعلامة اقتباس لنهاية. يجب أن اعترف السلسلة مع علامة (@).

|(([0-9a-zA-Z]

إذا كان الحرف أول هو غير علامة الاستفهام، مطابقة أي حرف هجائي من z أو أي حرف رقمي من 0 إلى 9.

(\.(?! \.))

إذا كان الحرف التالي هو فترة محددة، يتناسب معه. إذا كان ذلك هو البحث للأمام إلى الحرف التالي غير نقطة، ومتابعة المباراة. (?! \.) is a zero-width negative lookahead assertion that prevents two consecutive periods from appearing in the local part of an e-mail address.

|[-!#\$%&'\*\+/=\? \^`\{\}\|~\w]

إذا كان الحرف التالي هو لا نقطة، يطابق أي حرف كلمة أو حرف من حرف/ حروف التالية: -!#$%'*+=?^`{}|~.

((\.(?! \.))|[-!#\$%'\*\+/=\? \^`\{\}\|~\w])*

مطابقة نقش alternation (نقطة متبوعة بفترة-غير أو أي عدد من حرف/ حروف) صفر أو أكثر مرة/مرات.

@

مطابقة @ حرف.

(?<=[0-9a-zA-Z])

متابعة المباراة إذا كان حرف التي تسبق @ حرف هو من A إلى Z، ومن a إلى z، أو من 0 إلى 9. (?<=[0-9a-zA-Z])يعرف بناء تأكيد العرض صفر lookbehind موجبة.

(?(\[)

فحص ما إذا كان الحرف الذي يتبع هو قوس فتح.

(\[(\d{1,3}\.){3}\d{1,3}\])

إذا كان ذلك هو قوس مفتوح، تطابق القوس متبوعاً بالعنوان IP (أربع مجموعات من الأرقام واحدة إلى ثلاث، مع كل التعيين مفصولة بنقطة) وقوس إغلاق.

|(([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، متبوعاً بنقطة. يمكن تكرارها هذا نقش أو أكثر والأوقات، ويجب أن يتبعها الثاني إلى ستة (a-z و A-Z) أحرف الأبجدية. Th هو جزء من تعبير عادي هو تصميمها لالتقاط اسم مجال.

التحويل البرمجي للتعليمات البرمجية

يمكن للأسلوب IsValidEmail أن يتم تضمينه في مكتبة لأساليب الأدوات المساعدة للتعبيرات العادية، أو أنه قد يتم تضمينه كأسلوب ثابت خاص أو أسلوب مثيل في فئة التطبيق. إذا تم استخدامه كأسلوب ثابت في مكتبة التعبيرات العادية ،يمكن استدعاؤه باستخدام التعليمات البرمجية كالتالي:

Public Class Application
   Public Shared Sub Main()
      Dim emailAddresses() As String = { "david.jones@proseware.com", "d.j@server1.proseware.com", _
                                         "jones@ms1.proseware.com", "j.@server1.proseware.com", _
                                         "j@proseware.com9", "js#internal@proseware.com", _
                                         "j_9@[129.126.118.1]", "j..s@proseware.com", _
                                         "js*@proseware.com", "js@proseware..com", _
                                         "js@proseware.com9", "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 Sub
End 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
public class Application
{
   public static void Main()
   {
      string[] emailAddresses = { "david.jones@proseware.com", "d.j@server1.proseware.com", 
                                  "jones@ms1.proseware.com", "j.@server1.proseware.com", 
                                  "j@proseware.com9", "js#internal@proseware.com", 
                                  "j_9@[129.126.118.1]", "j..s@proseware.com", 
                                  "js*@proseware.com", "js@proseware..com", 
                                  "js@proseware.com9", "j.s@server1.proseware.com" };
      foreach (string emailAddress in emailAddresses)
      {
         if (RegexUtilities.IsValidEmail(emailAddress))
            Console.WriteLine("Valid: {0}", emailAddress);
         else
            Console.WriteLine("Invalid: {0}", emailAddress);
      }                                            
   }
}
// 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

راجع أيضًا:

موارد أخرى

التعبيرات العادية في .NET Framework