2017-05-15 2 views
1

Ich versuche nur eine Benutzereingabe mithilfe eines Textfelds zu validieren, die Validierung funktioniert, denke ich. Es erlaubt mir jedoch nur ein Zeichen gleichzeitig einzugeben. Ich bin mir nicht sicher, wie man einen Char auf einmal überprüft, bis er eine vollständige E-Mail-Adresse eingegeben hat.Regex, E-Mail-Validierung unter Eingabe von Benutzereingaben aus Textfeld

Ich denke, das jede Zeit prüft, wenn ein Zeichen eingegeben wird, die zu einem Ausfall führen wird, bis sie kopiert und eingefügt in ist.

 string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + 
      @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$"; 

     Regex re = new Regex(strRegex); 
     if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10) 
     { 
      MessageBox.Show("Thanks"); 

     } 

     else 
     { 
      MessageBox.Show("Please enter a valid email address"); 



     } 

    } 
+0

I Es wird jedoch bevorzugt, 'MailAddress' für den Benutzernamen und den Domainnamen zu verwenden:' var email = new MailAddress (string_to_check) ', aber Sie können auch TLD-Check hinzufügen (verwenden Sie einen spezifischen Regex für TLD). –

+0

danke, aber wie würde ich dies zu meiner eigenen Funktion implementieren? – whatdoyouNeedFromMe

+0

Ich denke, Sie können es implementieren, nachdem Sie den TLD-Teil mit regex überprüft haben, der die gültige Zeichenfolge als Argument an die 'MailAddress'-Instanz im' try'-Block übergibt. Wenn es sich um eine ungültige E-Mail handelt, verwenden Sie den 'catch'-Block, um eine ungültige E-Mail-Nachricht mit' MessageBox.Show' zu werfen. –

Antwort

0

sein können auf keyup, keydown Ereignis validieren. Validiere das Änderungsereignis.

Wenn Sie in winform Anwendung tun, können Sie das auf focusleave Ereignis tun

0

@Tetsuya Yamamoto das, was ich habe, so weit ist, aber ich bin nicht sicher, ob das, was Sie meinen

ist
 string strRegex = @"^(?("")("".+?(?<!\\)""@)|(([0-9a-z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-z])@))" + 
     @"(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-z][-\w]*[0-9a-z]*\.)+[a-z0-9][\-a-z0-9]{0,22}[a-z0-9]))$"; 

     Regex re = new Regex(strRegex); 
     if (re.IsMatch(txtEmail.Text) || txtEmail.Text == "" || txtEmail.Text.Length > 100 && txtEmail.Text.Length < 10) 
     { 
      try 
      { 
       var email = new MailAddress(strRegex); 
       MessageBox.Show("Thanks"); 
      } 
      catch (FormatException) 
      { 
       MessageBox.Show("Wrong"); 


      }