Grundsätzlich, in einer E-Mail-Adresse Zeichenfolge, haben Sie Texte vor und nach "@" Zeichen.
Jedes Zeichen in Texten 2 Regeln sollten übereinstimmen:
[a-z]|\d|[!#\$%&'*+-/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]
- einige Unicode-Coderegeln, wie ich weiter unten.
Die erste Regel bedeutet ein Zeichen in Text eine der folgenden sein kann:
- az
- beliebige Ziffer
- einem der
!#\$%&'*+-/=\?\^_`{\|}~
- im Unicode-Bereich
\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF
Dann werden Texte durchgetrennt
Es sollte etwas sein wie:
private static Regex _regex = new Regex(@"^
(
(
([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+
(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*
)
|
(
(\x22)
(
(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?
(
([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|
(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))
)
)*
(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)
)
)
@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture);
Ihre Tester sollten ihre eigenen Testfälle für E-Mails erstellen sie denken sollte passieren und scheitern. Was ist der Zweck, dem Tester nur zu sagen, was funktionieren wird? Sie sollten sich nur darum kümmern, dass es tun kann, was es bewirbt, und nicht, wie es es schafft. – Matthew