string regexPattern = @"^(?!..{2})(?!.[&=_'-+,<>])(?!..$)[a-zA-Z0-9][a-zA-Z0-9.][a-zA-Z0-9]$";
Penjelasan regex:
- ^ menandakan awal dari string.
- (?!.*.{2}) adalah negative lookahead yang memastikan tidak ada lebih dari satu titik berturut-turut.
- (?!.*[&='-+,<>]) adalah negative lookahead yang memastikan tidak ada karakter yang tidak diizinkan seperti tanda ampersand (&), sama dengan (=), garis bawah (), apostrof ('), tanda hubung (-), tanda tambah (+), koma (,), tanda kurung (<,>).
- (?!.*.$) adalah negative lookahead yang memastikan tidak ada titik sebagai karakter terakhir.
- [a-zA-Z0-9] adalah karakter pertama yang harus berupa huruf atau angka.
- [a-zA-Z0-9.]* adalah karakter-karakter selanjutnya yang dapat berupa huruf, angka, atau titik.
- [a-zA-Z0-9]$ adalah karakter terakhir yang harus berupa huruf atau angka.
- $ menandakan akhir dari string.
string regexPattern = "^\w+([.]\w+)@\w+([-.]\w+)\.\w+([-.]\w+)*$"
Penjelasan regex :
- ^ : Menandakan awal dari string. Ini memastikan bahwa keseluruhan string harus cocok dengan pola yang didefinisikan.
- \w+ : Mencocokkan satu atau lebih karakter huruf, angka, atau garis bawah (underscore) sebagai bagian dari nama pengguna email.
- ([.]\w+)* : Grup pengecualian yang mencocokkan titik (dot) dan satu atau lebih karakter huruf atau angka setelahnya. Ini memungkinkan penggunaan titik dalam nama domain, seperti dalam subdomain atau nama file. Tanda asterisk (*) menunjukkan bahwa grup pengecualian dapat muncul nol kali atau lebih.
- @ : Mencocokkan karakter at (@) yang digunakan sebagai pemisah antara nama pengguna dan domain email.
- \w+ : Mencocokkan satu atau lebih karakter huruf atau angka sebagai bagian dari nama domain.
- ([-.]\w+)* : Grup pengecualian yang mencocokkan tanda hubung atau garis bawah diikuti oleh satu atau lebih karakter huruf atau angka. Ini memungkinkan penggunaan tanda hubung atau garis bawah dalam nama domain. Grup pengecualian ini juga dapat muncul nol kali atau lebih.
- \. : Mencocokkan titik (dot) sebagai pemisah antara domain dan ekstensi domain.
- \w+ : Mencocokkan satu atau lebih karakter huruf atau angka sebagai bagian dari ekstensi domain.
- ([-.]\w+)* : Grup pengecualian yang mencocokkan tanda hubung atau garis bawah diikuti oleh satu atau lebih karakter huruf atau angka.
- $ : Menandakan akhir dari string. Ini memastikan bahwa keseluruhan string cocok dengan pola yang didefinisikan hingga akhir.
var emails = new List(){
// Email tidak valid
"[email protected]",
"astri&[email protected]",
"[email protected]",
"astrid'[email protected]",
"[email protected]",
"[email protected]",
"astrid,[email protected]",
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected].",
"[email protected]",
"astrid/[email protected]",
"astrid/[email protected]",
"astrid\[email protected]",
// Email valid
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
};
string regexPattern = "^[a-zA-Z0-9._]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$";
Regex regex = new Regex(regexPattern);
foreach(var email in emails)
{
if (!regex.IsMatch(email))
{
Console.WriteLine($"Email tidak valid : {email}");
}
}