Regex Tester
Masukkan pola, pilih flag, lalu tempel teks uji: regex tester ini menampilkan setiap kecocokan beserta indeksnya, isi grup tangkapan bernomor dan bernama, serta menjelaskan setiap bagian pola dalam bahasa Indonesia. Pencocokan memakai mesin JavaScript browser Anda (ECMAScript).
Cara menghitung
Regex tester ini memakai ragam JavaScript dari ekspresi reguler sebagaimana didefinisikan standar ECMA-262 dan diterapkan oleh browser Anda. Pola yang berfungsi di sini akan berfungsi sama persis di String.prototype.match, matchAll, replace, dan RegExp.prototype.test – di Chrome, Firefox, Safari, dan Node.js.
Cara menguji regex
- Masukkan pola tanpa garis miring di awal dan akhir, misalnya
\d+. - Centang flag yang diperlukan (misalnya g untuk semua kecocokan, i untuk mengabaikan huruf besar/kecil).
- Tempel teks uji, lalu baca kecocokan, grup, dan penjelasan pola.
Contoh: Pola \d{4} dengan flag g menemukan 2 kecocokan dalam „Lahir 1990, pindah 2015”: 1990 pada posisi 6 dan 2015 pada posisi 19 (posisi dihitung dari 0).
Cara membuat regex
Susun pola dari bagian kecil: karakter biasa cocok dengan dirinya sendiri, \d berarti satu digit, [a-z] satu huruf kecil, + berarti „satu kali atau lebih”, dan tanda kurung membentuk grup. Contoh nomor ponsel Indonesia: ^(?:\+62|0)8\d{8,11}$ cocok dengan 081234567890 dan +6281234567890. Uji pola langkah demi langkah di sini dan lihat penjelasan tiap bagian di tabel.
Membaca hasil
- Kecocokan: setiap kecocokan dengan indeks (posisi karakter mulai dari nol, dihitung dalam unit UTF-16 seperti JavaScript – emoji dihitung 2) dan panjangnya. Baris baru ditampilkan sebagai ↵, tab sebagai ⇥.
- Grup per kecocokan: apa yang ditangkap setiap pasangan tanda kurung – grup bernomor
( )dan grup bernama(?<name> ). „Tidak berperan” berarti grup berada di alternatif yang tidak dipakai. Dengan flagdAnda juga mendapat posisi setiap grup. - Penjelasan pola: setiap token dijelaskan; baris menjorok (›) berada di dalam grup.
Flag
g mencari semua kecocokan, bukan hanya yang pertama, i mengabaikan huruf besar/kecil, m membuat ^ dan $ bekerja per baris, s membuat titik cocok dengan baris baru. u memperlakukan emoji dan karakter lain di luar Basic Multilingual Plane sebagai satu karakter dan mengaktifkan properti Unicode seperti \p{L} (huruf apa pun, termasuk é). v adalah versi baru u dengan operasi himpunan seperti [\p{L}--[a-z]]; u dan v tidak bisa digabung. y („sticky”) hanya menemukan kecocokan yang berurutan tanpa celah.
Perlindungan dari loop tak berujung dan macet
Pola seperti a* atau \b bisa menghasilkan kecocokan kosong. Seperti JavaScript sendiri, tester lalu maju satu karakter (satu code point penuh dengan u/v), sehingga tidak terjadi loop tak berujung. Maksimal 1.000 kecocokan yang dicari.
Bahaya yang lebih besar adalah catastrophic backtracking (ReDoS): kuantifier bersarang seperti (a+)+$ mencoba jumlah kombinasi yang eksponensial pada teks yang tidak cocok – 30 karakter bisa membuat mesin sibuk bermenit-menit. Karena itu pencarian berjalan di thread latar terpisah dan dihentikan setelah 2 detik; halaman tetap responsif. Hindari pola seperti itu di kode Anda, terutama untuk input pengguna.
Perbedaan dengan ragam regex lain
PCRE (PHP), Python, Java, dan .NET berbeda dalam detail: JavaScript tidak punya kuantifier posesif (a++), grup atomik, atau jangkar \A dan \Z; \w hanya mencakup A–Z, a–z, 0–9, dan garis bawah – untuk huruf beraksen gunakan \p{L} dengan flag u.
Teks uji Anda tidak dikirim, tidak disimpan, dan tidak ditulis ke tautan – hanya pola dan flag.
Pertanyaan umum
Apa itu regex?
Regex (regular expression, ekspresi reguler) adalah cara menulis pola teks dengan simbol. Misalnya \d{5} berarti „lima digit” dan cocok dengan kode pos seperti 40115. Regex dipakai untuk mencari, mengganti, dan memvalidasi input.
Bagaimana cara menguji regular expression?
Ketik pola tanpa garis miring di kolom atas, centang flag yang diperlukan, lalu tempel teks Anda. Semua kecocokan langsung disorot di teks dan dicantumkan beserta indeksnya; di bawahnya terlihat apa yang ditangkap setiap grup.
Mengapa \w tidak cocok dengan huruf beraksen?
Di JavaScript, \w hanya berarti A–Z, a–z, 0–9, dan _. Untuk huruf dalam bahasa apa pun, gunakan \p{L} dengan flag u, misalnya [\p{L}\d_]+ untuk kata seperti „café”.
Apa beda greedy dan lazy?
Kuantifier greedy (*, +, {2,}) mengambil teks sebanyak mungkin, kuantifier lazy dengan tanda tanya di belakang (*?, +?) sesedikit mungkin. Pada „<b>x</b>”, <.+> cocok dengan seluruh teks, <.+?> hanya „<b>”.
Bagaimana cara memberi nama grup tangkapan?
Gunakan (?<name>…). Di kode Anda membacanya lewat match.groups.name, di string pengganti dengan $<name>, dan di dalam pola dengan backreference \k<name>.
Mengapa pencarian saya dihentikan?
Pencarian berjalan lebih dari 2 detik – biasanya karena catastrophic backtracking dengan kuantifier bersarang seperti (\w+)*. Sederhanakan pola: jangan menyarangkan kuantifier, buat alternatif tidak ambigu, dan beri jangkar ^ dan $.
Apakah hasilnya berlaku juga untuk PHP atau Python?
Untuk pola sederhana biasanya ya, tetapi yang dijamin hanya JavaScript. PHP (PCRE) dan Python mendukung sintaks tambahan seperti kuantifier posesif atau \A, dan Python secara tradisional menulis grup bernama sebagai (?P<name>…).
Sumber dan dasar hukum
- ECMA-262 § 22.2: ECMA-262 – ECMAScript Language Specification, RegExp (Regular Expression) Objects
- MDN Web Docs – Regular expressions (Guide)
- MDN Web Docs – RegExp.prototype.flags
- MDN Web Docs – String.prototype.matchAll() (empty matches, lastIndex)
- OWASP – Regular expression Denial of Service (ReDoS)
Diperbarui:
Alat terkait
- JSON formatter, validator, dan minifyJSON formatter online: validasi JSON sesuai RFC 8259, lihat error lengkap dengan baris, kolom, dan penjelasannya. Rapikan, minify, urutkan key – di browser.
- XML validator dan cek CSV onlineXML validator online: cek apakah XML well-formed dan CSV sesuai RFC 4180 – error dengan baris dan kolom, deteksi pemisah, pratinjau tabel. Tanpa upload.
- Base64 decode dan encode onlineBase64 decode dan encode online, termasuk Base64url dengan UTF-8 yang benar, serta URL encode/decode (percent-encoding). Pesan error jelas, berjalan di browser.
- Hash generator: SHA-256, SHA-512, SHA-1, MD5Hitung hash SHA-256, SHA-384, SHA-512, SHA-1 dan MD5 dari teks atau file dan cocokkan checksum – langsung di browser, tanpa upload, gratis.
- Cek Format Alamat EmailCek satu atau banyak alamat email sekaligus: format sesuai RFC 5321/5322, panjang, label domain, domain internasional (Punycode). Lokal, tidak ada yang dikirim.
- Cek dan hitung check digit dengan algoritma LuhnValidasi nomor dengan algoritma Luhn (mod 10, ISO/IEC 7812-1) atau hitung check digit-nya – hanya cek format, berjalan sepenuhnya di browser Anda.