Regex tester memungkinkan kamu mengetik regular expression dan langsung melihat apa yang dicocokkannya di teks contoh. Developer memakai regex (regular expression) untuk memvalidasi input, mengambil data dari string, mencari di log, membersihkan teks, membuat perintah editor, dan menulis aturan cari-dan-ganti.
Regex terasa membingungkan pada awalnya karena beberapa simbol membawa banyak makna. Tester langsung membuatnya lebih mudah dipahami: setiap karakter yang kamu ketik memperbarui kecocokan yang disorot dan capture group-nya, jadi kamu bisa bereksperimen sampai polanya bekerja persis seperti yang kamu mau.
Bahasa pemrograman yang berbeda memakai mesin regex yang sedikit berbeda (JavaScript, PCRE, Python, Java, Go, .NET). Dasar-dasarnya, yaitu karakter, character class, quantifier, anchor, dan group, berlaku di mana saja. Fitur lanjutan (lookbehind, named group, possessive quantifier) adalah tempat mesin-mesin itu mulai berbeda.
Yang kamu pelajari saat menguji regex
Pola menggambarkan *bentuk* teks, bukan maknanya. \d+ cocok dengan deretan digit, tapi tidak tahu apakah angkanya masuk akal.
Flag mengubah perilaku: g mencari setiap kecocokan, i mengabaikan huruf besar dan kecil, m membuat ^ dan $ cocok dengan akhir baris, s membuat . cocok dengan baris baru.
Capture group (...) mengambil bagian dari sebuah kecocokan, bukan hanya memeriksa apakah seluruh string cocok. Ini sangat penting untuk parsing.
Quantifier secara bawaan bersifat *greedy* (mencocokkan sebanyak mungkin). Menambahkan ? membuatnya *lazy* (mencocokkan sesedikit mungkin).
Cara memakai regex tester langkah demi langkah
1
Ketik polamu
Masukkan regular expression di kolom pola. Jangan sertakan garis miring / di kedua sisinya, karena itu sintaks literal JavaScript, bukan bagian dari polanya.
2
Aktifkan flag yang kamu butuhkan
Biasanya kamu butuh g (cari semua kecocokan) dan i (tidak peka huruf besar dan kecil). Pakai m untuk anchor per baris dan s supaya . cocok dengan baris baru.
3
Tempel string ujimu
Taruh teks contoh di area uji. Kecocokan langsung disorot saat kamu mengetik, dan capture group ditampilkan di bawah daftar kecocokan.
4
Baca panel kecocokan
Setiap kecocokan menampilkan posisinya, teks lengkapnya, dan group yang tertangkap. Pakai ini untuk memastikan polanya menangkap yang kamu mau dan melewatkan yang tidak.
5
Perbaiki sampai benar
Perketat quantifier, tambahkan anchor (^, $), atau escape karakter literal (\., \?) sampai kecocokan dan group-nya persis seperti yang dibutuhkan kodemu.
Cheat sheet regex
80% regex yang akan kamu pakai 99% dari waktu. Simpan halaman ini, karena inilah cara tercepat untuk mengingat sintaksnya. Untuk tata bahasa lengkapnya, lihat panduan regular expression di MDN.
Token
Arti
Contoh
.
Satu karakter apa pun (kecuali baris baru)
a.c cocok dengan abc, a-c
\d\D
Digit / bukan digit
\d+ cocok dengan 123
\w\W
Karakter kata (huruf/digit/_) / bukan karakter kata
\w+ cocok dengan hello_1
\s\S
Whitespace / bukan whitespace
\s+ cocok dengan spasi dan tab
[abc]
Salah satu dari a, b, atau c
[aeiou] cocok dengan satu huruf vokal
[^abc]
Bukan a, b, maupun c
[^0-9] cocok dengan selain digit
*+?
0+, 1+, 0 atau 1 dari yang sebelumnya
a+ cocok dengan a, aaa
{n}{n,m}
Tepat n / antara n dan m
\d{3,5} 3 sampai 5 digit
^$
Awal / akhir string (atau baris dengan m)
^Error baris yang diawali Error
(...)
Capture group
(\d+) menangkap digitnya
(?:...)
Group tanpa capture
(?:foo|bar) group tanpa menangkap
a|b
Alternasi: a atau b
yes|no
\b
Batas kata
\bcat\b cocok dengan cat, bukan cats
Contoh regex untuk dicoba
Mencocokkan bentuk email sederhana
Pola
^[\w.+-]+@[\w-]+\.[\w.-]+$
Teks
learner@coddy.tech
Pola ini menangkap bentuk dasar something@something.something. Validasi email di dunia nyata jauh lebih longgar dari ini. Untuk formulir, lebih baik pakai type="email" dan pemeriksaan di server.
Mengambil setiap angka dari sebuah kalimat
Pola
\d+
Teks
Lesson 12 has 3 tasks and 2 quizzes.
Dengan flag g, pola ini menemukan setiap deretan digit: 12, 3, 2. \d+ adalah cara regex mengatakan "satu digit atau lebih".
Mengambil id dari URL dengan capture group
Pola
/users/(\d+)
Teks
/users/42/profile
Kecocokan lengkapnya adalah /users/42, dan capture group (\d+) hanya mengambil 42. Dengan capture group, kamu benar-benar bisa *memakai* hasil regex di kode.
Quantifier greedy vs lazy
Greedy
<.+>
Lazy
<.+?>
Teks
<b>hello</b>
Versi greedy mencocokkan seluruh string <b>hello</b> karena .+ mengambil sebanyak mungkin. Versi lazy (+?) berhenti di > pertama, jadi hanya mencocokkan <b> dan </b>.
Kesalahan umum saat menulis regex
Lupa meng-escape karakter khusus: ., ?, +, (, ), [, ], {, }, \, ^, $, |. Kalau maksudmu karakter itu apa adanya, beri awalan \.
Menulis pola yang berhasil untuk satu contoh, tapi gagal pada input nyata yang punya spasi ekstra, baris baru, atau field yang kosong.
Memakai .* secara greedy sehingga mencocokkan jauh lebih banyak dari yang dimaksud. Ganti dengan .*? atau character class yang lebih spesifik.
Mencoba mem-parse format yang bersarang dalam (HTML lengkap, bahasa pemrograman yang kompleks, tanda kurung berpasangan) dengan regex. Pakai parser sungguhan.
Lupa flag g lalu bingung kenapa hanya kecocokan pertama yang disorot.
FAQ Regex
Apa itu regex?
Regex adalah singkatan dari *regular expression*, yaitu bahasa pola ringkas untuk mencocokkan teks. Gagasan yang sama ada di hampir setiap bahasa pemrograman serta banyak editor dan tool command line.
Bagaimana cara menulis regex?
Mulailah dengan karakter literal yang ingin kamu cocokkan, lalu ganti bagian yang berubah-ubah dengan character class (\d, \w, [abc]) dan quantifier (*, +, ?, {n,m}). Pakai regex tester untuk mencoba berulang kali sampai polanya cocok persis dengan kasus yang kamu mau.
Apa arti \w di regex?
\w cocok dengan karakter kata, yaitu huruf, digit, atau garis bawah. \W adalah kebalikannya (karakter apa pun yang bukan karakter kata). Kumpulan tepatnya bergantung pada mesin regex dan flag Unicode.
Kenapa regex saya mencocokkan terlalu banyak?
Quantifier secara bawaan bersifat greedy, jadi .* mencocokkan sebanyak mungkin. Ganti dengan quantifier lazy (.*?) atau pakai character class yang lebih spesifik supaya berhenti di tempat yang kamu mau.
Apakah regex JavaScript sama dengan regex lainnya?
Dasarnya sama, tapi mesinnya berbeda. JavaScript, PCRE, re di Python, Java, Go, dan .NET masing-masing mendukung flag dan fitur lanjutan yang sedikit berbeda (dukungan lookbehind, named group, possessive quantifier).
Apakah pemula perlu belajar regex?
Ya, secara bertahap. Mulailah dengan literal, character class, quantifier, anchor, flag, dan capture group. Simpan lookaround, named group, dan regex kondisional untuk nanti.