Cara menggunakan Regex Tester
- Masukkan pola Anda di antara garis miring, tanpa
/ di sekelilingnya. - Aktifkan flag seperti
g (semua kecocokan), i (abaikan huruf besar/kecil), dan m (multiline). - Tempel teks uji Anda. Kecocokan disorot di kanan dan dicantumkan beserta indeks dan capture group-nya di bawah.
- Centang Ganti dan masukkan penggantian seperti
$1 atau $<name> untuk mempratinjau String.replace. - Pilih pola dari Pustaka pola untuk memulai dari regex email, URL, IP, atau tanggal yang sudah teruji.
Regular expression JavaScript
Tester ini memakai engine RegExp milik browser Anda sendiri, sehingga hasilnya persis sama dengan yang dikembalikan String.match, matchAll, replace dan RegExp.exec di JavaScript dan Node.js. Termasuk sintaks modern: grup bernama (?<name>…), lookbehind (?<=…), escape properti Unicode seperti \p{L} dengan flag u, dan indeks kecocokan dengan flag d.
Fungsi setiap flag
| Flag | Nama | Efek |
g | global | Temukan semua kecocokan, bukan berhenti di yang pertama. |
i | ignoreCase | Huruf cocok tanpa memedulikan kapital. |
m | multiline | ^ dan $ cocok di awal dan akhir setiap baris. |
s | dotAll | . juga cocok dengan pemisah baris. |
u | unicode | Memperlakukan pola sebagai code point; mengaktifkan \p{…} dan \u{…}. |
y | sticky | Hanya mencocokkan di posisi lastIndex saat ini. |
d | hasIndices | Melaporkan posisi awal dan akhir setiap capture group. |
Perlindungan catastrophic backtracking
Pola dengan quantifier bersarang, seperti (a+)+$ atau (\w|\d)*x, bisa memakan waktu eksponensial pada input yang hampir cocok. Di halaman web biasa, ini membuat tab macet. Di sini setiap pencocokan berjalan di Web Worker latar belakang yang dihentikan setelah satu detik, dan Anda mendapat peringatan yang jelas alih-alih browser yang hang. Pola yang sama di kode production bisa menjadi celah ReDoS, jadi anggap peringatan itu sebagai bug yang perlu diperbaiki.
Tips menulis regex yang lebih baik
- Jangkarkan pola dengan
^ dan $ saat memvalidasi seluruh nilai, jika tidak, kecocokan di mana pun dalam string akan lolos.
- Utamakan kelas spesifik seperti
[^"]* daripada .*; lebih cepat dan menghindari pencocokan berlebih.
- Gunakan grup non-capturing
(?:…) saat Anda tidak memerlukan nilai yang ditangkap.
- Beri nama grup Anda.
match.groups.year lebih mudah dibaca daripada match[1].
Pertanyaan yang sering diajukan
Varian regex apa yang dipakai tester ini?
JavaScript (ECMAScript), melalui RegExp bawaan browser Anda. Sebagian besar sintaks sama dengan PCRE, Python, dan Java, tetapi fitur seperti possessive quantifier, atomic group, dan modifier inline seperti (?i) tidak tersedia di JavaScript.
Mengapa pola saya hanya menemukan satu kecocokan?
Tanpa flag g (global), JavaScript berhenti setelah kecocokan pertama. Aktifkan g untuk menemukan semua kemunculan.
Bagaimana cara merujuk grup dalam penggantian?
Gunakan $1, $2… untuk grup bernomor, $<name> untuk grup bernama, $& untuk seluruh kecocokan, dan $$ untuk tanda dolar literal.
Mengapa tester berhenti karena timeout?
Pola memakan waktu lebih dari satu detik pada input Anda, yang hampir selalu berarti catastrophic backtracking. Cari quantifier bersarang seperti (x+)+ atau alternatif yang tumpang tindih seperti (a|a)* dan tulis ulang agar setiap karakter hanya bisa dicocokkan dengan satu cara.
Apakah data uji saya dikirim ke suatu tempat?
Tidak. Pencocokan berjalan secara lokal di Web Worker di dalam browser Anda. Pola dan teks Anda hanya disimpan di browser Anda sendiri agar masih ada saat Anda kembali.