20 Pola Regex Umum yang Harus Diketahui Setiap Developer
20 Pola Regex Umum yang Harus Diketahui Setiap Developer
Regex menyelesaikan masalah nyata: validasi input, ekstraksi data, dan transformasi string. Panduan ini menyajikan 20 ekspresi reguler siap pakai yang mencakup tugas pemrosesan teks paling umum. Setiap pola dilengkapi penjelasan tentang apa yang dicocokkan.
1. Alamat Email
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Bagian lokal mengizinkan huruf, digit, titik, dan karakter khusus. Domain mengizinkan huruf, digit, dan titik. TLD harus minimal dua huruf.
2. URL
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z]{2,}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)
Mencocokkan URL HTTP/HTTPS dengan www opsional, nama domain, TLD, path, dan query string.
3. Nomor Telepon AS
^\(?(\d{3})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})$
Mencocokkan (555) 123-4567, 555-123-4567, 555.123.4567, dan 5551234567.
4. Telepon Internasional
^\+?(\d{1,3})\s?[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}$
Pola permisif untuk nomor internasional dengan kode negara.
5. Kata Sandi Kuat
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$
Membutuhkan 8+ karakter, satu huruf kecil, satu huruf besar, satu digit, satu karakter khusus. Menggunakan lookahead assertion.
6. Tanggal (YYYY-MM-DD)
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])$
Format ISO 8601. Bulan 01-12, hari 01-31. Tidak memvalidasi batas per bulan (30 Feb lolos).
7. Tanggal (MM/DD/YYYY)
^(0[1-9]|1[0-2])\/(0[1-9]|[12]\d|3[01])\/\d{4}$
Format AS dengan garis miring.
8. Waktu (JJ:MM 24 Jam)
^([01]\d|2[0-3]):[0-5]\d$
Jam 00-23, menit 00-59.
9. Alamat IPv4
^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$
Empat oktet. Untuk validasi ketat (0-255), ganti \d{1,3} dengan (25[0-5]|2[0-4]\d|[01]?\d\d?).
10. Alamat IPv6
^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$
IPv6 penuh dengan 8 grup digit heksadesimal. Tidak menangani singkatan ::.
11. Alamat MAC
^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$
Dipisahkan oleh titik dua atau tanda hubung.
12. Kode Warna Hex
^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
3-digit (#fff) atau 6-digit (#ffffff), case-insensitive.
13. Nomor Kartu Kredit
^\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}$
16 digit dengan pemisah opsional. Tidak memvalidasi checksum Luhn.
14. Kode Pos AS
^\d{5}(-\d{4})?$
12345 atau 12345-6789.
15. Nama Pengguna
^[a-zA-Z0-9_]{3,16}$
3-16 karakter, hanya huruf, digit, dan underscore.
16. URL Slug
^[a-z0-9-]+$
Huruf kecil, digit, dan tanda hubung. Umum di sistem CMS.
17. Tag HTML
<\/?[\w\s]*>|<.+[\w\s]*>
Mencocokkan tag pembuka dan penutup. Tidak cocok untuk HTML bersarang.
18. Ekstensi File
\.([a-zA-Z]{2,})$
Mengekstrak ekstensi tanpa titik.
19. Normalisasi Whitespace
\s+
Menggabungkan beberapa spasi, tab, atau baris baru menjadi satu.
20. Ekstrak Angka
-?\d+(\.\d+)?
Bilangan bulat dan desimal, termasuk negatif.
Tips Kinerja
- Spesifik — hindari
.*yang dapat menyebabkan catastrophic backtracking. - Gunakan anchor
^dan$untuk membatasi cakupan pencarian. - Uji kasus tepi: string kosong, string panjang, karakter khusus.
Uji Pola Ini Secara Online
Gunakan alat penguji regex untuk bereksperimen dengan pola-pola ini. Tempelkan ekspresi apa pun, masukkan teks sampel, dan lihat kecocokan disorot secara real time. Penguji menampilkan capture group dan membantu men-debug pola sebelum digunakan.