Apa Itu Regular Expressions (Regex)
Regular expressions (Regex) adalah bahasa pola yang digunakan untuk mencari, memvalidasi, dan memproses teks.
Dengan regex, Anda dapat:
menemukan fragmen teks tertentu (misalnya email, URL, angka)
memvalidasi format data (validasi formulir)
mengganti dan membersihkan teks
mengekstrak data terstruktur dari string
Regex banyak digunakan dalam pengembangan, analitik data, SEO, dan otomasi.
Apa Fungsi Alat “Regex Tester”
Alat ini memungkinkan Anda menguji regular expressions secara real time dan langsung melihat hasilnya.
Dengan alat ini, Anda dapat:
memeriksa apakah sebuah string cocok dengan pola tertentu
melihat semua kecocokan dalam sebuah teks
melakukan debug pada ekspresi yang kompleks
menguji berbagai variasi regex tanpa menulis kode
Engine Regex Populer dan Perbedaannya
Regular expressions tidak sepenuhnya universal. Dukungan sintaks bergantung pada bahasa pemrograman dan engine yang digunakan.
Engine | Penggunaan | Fitur |
|---|
JavaScript (ECMAScript) | Browser, Node.js | Lookbehind terbatas (tergantung versi) |
PCRE | PHP, banyak alat | Salah satu engine paling kuat |
Python (re) | Python | Tidak memiliki beberapa fitur PCRE |
Java (Pattern) | Java | Sintaks ketat |
.NET | C# | Kemampuan lanjutan |
Selalu uji regex Anda di lingkungan target. Perhatikan perbedaan dukungan lookbehind dan Unicode. Untuk kompatibilitas lintas platform, gunakan pola yang lebih sederhana.
Flags / Modifier Regex
Flags adalah modifier yang mengubah cara pola diproses. Flags memungkinkan Anda mengatur sensitivitas huruf besar/kecil, cakupan pencarian (satu baris atau banyak baris), dan interpretasi karakter.
Flag | Arti |
|---|
i | Tidak peka huruf besar/kecil |
g | Pencarian global |
m | Mode multiline |
s | Dotall (menyertakan \n dalam .) |
u | Unicode |
Karakter Khusus dalam Regex
Jenis | Simbol | Deskripsi |
|---|
Anchor (posisi) | ^ | Awal string |
Anchor (posisi) | $ | Akhir string |
Anchor (posisi) | \b | Batas kata |
Anchor (posisi) | \B | Bukan batas kata |
Metakarakter | . | Cocok dengan karakter apa pun kecuali baris baru (\n) |
Metakarakter | | | Operator OR |
Metakarakter | \ | Karakter escape |
Literal | a | Karakter “a” |
Literal | ab | String “ab” |
Quantifier | * | 0 atau lebih pengulangan |
Quantifier | ? | 0 atau 1 pengulangan |
Quantifier | + | 1 atau lebih pengulangan |
Quantifier | {5} | Tepat 5 pengulangan |
Quantifier | {5,} | 5 atau lebih pengulangan |
Quantifier | {5,10} | Antara 5 dan 10 pengulangan |
Character Class | \s | Whitespace |
Character Class | \S | Bukan whitespace |
Character Class | \w | Karakter kata (alfanumerik + underscore) |
Character Class | \W | Bukan karakter kata |
Character Class | \d | Digit |
Character Class | \D | Bukan digit |
Escape Sequence | [\b] | Backspace |
Escape Sequence | \c | Karakter kontrol |
Escape Sequence | \n | Baris baru |
Escape Sequence | \t | Tab |
Escape Sequence | \r | Carriage return |
Escape Sequence | \ZZZ | Karakter oktal |
Escape Sequence | \xZZ | Karakter heksadesimal |
Escape Sequence | \0 | Karakter null |
Escape Sequence | \v | Tab vertikal |
Group | (xyz) | Grup tangkap |
Group | (?:xyz) | Grup non-tangkap |
Set dan Rentang | [xyz] | Salah satu dari x, y, z |
Set dan Rentang | [^xyz] | Bukan x, y, z |
Set dan Rentang | [a-q] | Rentang dari a sampai q |
Set dan Rentang | [0-7] | Rentang dari 0 sampai 7 |
Pola Penggantian | $` | Teks sebelum kecocokan |
Pola Penggantian | $' | Teks setelah kecocokan |
Pola Penggantian | $+ | Grup tangkap terakhir |
Pola Penggantian | $& | Seluruh hasil kecocokan |
Pola Penggantian | $n | Grup tangkap ke-n (misalnya $1, $2) |
Lookaround | (?=xyz) | Positive lookahead |
Lookaround | (?!xyz) | Negative lookahead |
Lookaround | (?<=xyz) | Positive lookbehind |
Lookaround | (?<!xyz) | Negative lookbehind |
Komentar | (?#comment) | Komentar (diabaikan oleh engine) |
Pola Regex yang Sering Digunakan
Tugas | Regex |
|---|
Hanya digit | ^\d+$ |
Hanya huruf Latin | ^[A-Za-z]+$ |
Tanggal (DD.MM.YYYY) | \d{2}\.\d{2}\.\d{4} |
Domain | ^[a-z0-9.-]+\.[a-z]{2,}$ |
URL | https?:\/\/[^\s]+ |
Slug | ^[a-z0-9-]+$ |
Email (dasar) | ^[^\s@]+@[^\s@]+\.[^\s@]+$ |
Email (ketat) | ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ |
Telepon (umum) | ^\+?\d{7,15}$ |
Tag HTML | <[^>]+> |
Kata sandi kuat | ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{12,}$ |
UUID | ^[0-9a-fA-F-]{36}$ |
Warna HEX | ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ |
IP (IPv4) | ^(\d{1,3}\.){3}\d{1,3}$ |
Alamat MAC | ^([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2}$ |
Kesalahan Regex yang Umum
Regular expressions sering terlihat sederhana, tetapi mengandung banyak detail tersembunyi. Berikut adalah kesalahan umum yang sering menyebabkan hasil tidak akurat.
Kesalahan Sintaks dan Logika
Lupa melakukan escape: . cocok dengan karakter apa pun, bukan titik literal → gunakan \.
Penggunaan quantifier yang salah: *, +, {} berlaku untuk token sebelumnya, bukan seluruh string
Bingung antara greedy dan lazy: .* bersifat greedy → gunakan .*? untuk kecocokan minimal
Masalah Pencocokan String
Tidak menggunakan anchor ^ dan $: tanpa anchor, kecocokan dapat terjadi di mana saja dalam string
Sensitivitas huruf besar/kecil: "Test" ≠ "test" → gunakan flag i jika perlu
Kebingungan dengan whitespace: \s mencakup tab, baris baru, dll., bukan hanya spasi
Kesalahan Praktis
Menggunakan \w untuk Unicode: di sebagian besar engine, \w = [A-Za-z0-9_] (tidak mencakup Cyrillic, dll.)
Mencoba mem-parsing format kompleks (HTML, JSON) dengan regex: tidak andal → gunakan parser khusus
Pola terlalu kompleks: sulit dipelihara dan di-debug
Masalah Performa