Regular Expression untuk Email
Coba Cek Email Anda :
Validasi email merupakan salah satu validasi umum di dunia pemrograman.
Kapan digunakan validasi email ini ?
- Validasi ini digunakan misalnya ketika pengguna mendaftar/sign-in di aplikasi kita.
- Atau ketika melakukan pendaftaran pengguna secara banyak menggunakan file .csv, .xls, dll.
- Atau juga ketika melakukan security debugging/scanning, terhadap login history menggunakan email.
- Dan lain sebagainya.
Bagaimana bentuk email yang valid ?
Coba kita lihat contoh email yang valid :
* email@email.com
* user1@xxyy.com
* user-2@aabb.com
* user3@aa-bb.co
* user4@aa-bb.co.id
Banyak sekali kombinasi email yang dapat kita buat. Akibatnya ada yang menyederhanakan kombinasi ini, tetapi ada juga yang meneliti sampai detil tentang bentuk email yang valid.
Validasi Regex email
Catatan : Validasi regex email ini menggunakan dialek PCRE (Perl Compatible Regular Expression), karena kebanyakan bahasa pemrograman menggunakan dialek PCRE ini dalam library mereka.
1. Regex Email sederhana
^\S+@\S+$
maksud dari regex diatas :
cari karakter yang bukan spasi sebanyak 1 atau lebih, diikuti tanda @, lalu diikuti satu karakter atau lebih yang bukan spasi
Contoh :
grep ^\S+@\S+$ 'testing@gmail.com'
Penjelasannya :
- ^ : awal dari kata/email
- \S : shorthand untuk karakter selain spasi.
- + : cukup satu karakter atau lebih sebelum tanda @
- @ : karakter @
- \S : shorthand setelahnya diikuti dengan karakter selain spasi.
- + : cukup satu karakter atau lebih setelah tanda @
- $ : penanda akhir kata/email.
2. Regex Email sederhana lainnya
^[\w-.]+@([\w-]+.)+[\w-]{2,4}$
maksud dari regex diatas :
cari urutan karakter yang merupakan salah satu dari [a-zA-Z0-9_-.] , lalu diikuti tanda @, lalu diikuti urutan karakter yang merupakan salah satu dari [a-zA-Z0-9_-] yang digrup beberapa kali, lalu tanda titik, lalu urutan karakter yang merupakan salah satu dari [a-zA-Z0-9_-] sebanyak 2 - 4 karakter
Wow, cukup sulit sepertinya. Tetapi kalau kita lihat dengan deskripsi seperti itu, diimplementasikannya cukup dengan satu baris Regex diatas.
Itulah powerful nya Regex !!
Contoh :
grep ^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$ 'testing@test-1.info'
Penjelasannya :
- ^ : awal dari kata/email
- [\w-.] : shorthand untuk urutan karakter salah satu dari [A-Za-z0-9_].
- + : cukup satu karakter atau lebih sebelum tanda @
- @ : karakter @
- ([\w-]+.) : grouping untuk kasus domain email , misal @gov.
- + : satu grouping atau lebih setelah tanda @
- [\w-] : shorthand untuk urutan karakter salah satu dari [A-Za-z0-9_].
- {2,4} : jumlah karakter diatas antara 2-4 karakter, grouping domain, misal id, info, xyz
- $ : penanda akhir kata/email.
3. Regex Email kompleks, diklaim 99,99% email valid bisa dicapture dengan validasi ini.
\A[a-z0-9!#$%&'+/=?^_`{|}~-]+(?:.[a-z0-9!#$ %&'+/=?^_`{|}~-]+)@(?:[a-z0-9](?:[a-z0-9-][az0- 9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\Z
Pusing kan ?
Tidak udah dijelaskan, karena akan menghabiskan banyak waktu. Cukup tahu saja dan copy paste kalau dibutuhkan :).
4. Regex Email untuk validasi mengacu ke RFC 5322
\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)* | "(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f] | \\[\x01-\x09\x0b\x0c\x0e-\x7f])*") @ (?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? | \[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3} (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]: (?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f] | \\[\x01-\x09\x0b\x0c\x0e-\x7f])+) \])\ZWaduuh, apalagi ini. Jangankan mau dijelaskan, melihatnya saja mungkin sudah bikin mual dan sakit kepala.
Bagi yang masih penasaran dan ingin kesempurnaan, maka silahkan pakai Regex ini untuk memvalidasi email.
Referensi
https://emailregex.com/email-validation-summary/ https://tools.ietf.org/html/rfc5322