Penguji ekspresi reguler (regex)

Uji regex JavaScript langsung: kecocokan, grup tangkap, dan pratinjau penggantian.

Sintaks JavaScript (ECMAScript), ditulis tanpa garis miring.

Flag

Gunakan $1, $<nama>, $& untuk seluruh kecocokan, dan $$ untuk tanda dolar.

Kecocokan

Ketik pola untuk melihat kecocokan.

Apa yang dilakukan alat ini

Ekspresi reguler (regex) adalah pola singkat yang menggambarkan sekumpulan teks, misalnya "empat angka, tanda hubung, dua angka" atau "semua yang ada di antara tanda kurung siku". Alat ini menguji pola pada teks Anda saat Anda mengetik: menyorot setiap kecocokan, menampilkan posisinya, menunjukkan apa yang ditangkap tiap grup, dan memperlihatkan pratinjau penggantian seperti $2, $1. Apa pun yang Anda tempel tidak diunggah, pencarian berjalan di browser Anda.

Alat ini memakai mesin regex bawaan browser, yaitu dialek JavaScript (ECMAScript). Cocok untuk JavaScript, TypeScript, dan Node.js. Python, PHP, dan Java punya sedikit perbedaan, jadi periksa fitur khususnya di dokumentasi bahasa tersebut.

Cara menguji pola

  1. Ketik pola di kolom pertama, tanpa garis miring di sekelilingnya. \d{4}-\d{2} adalah polanya; /\d{4}-\d{2}/g adalah bentuknya di kode.
  2. Aktifkan flag yang diperlukan. Flag g sudah aktif agar semua kecocokan ditemukan, bukan hanya yang pertama.
  3. Tempel atau ketik teks uji. Kecocokan disorot dengan dua warna bergantian agar kecocokan yang berdekatan tetap terbedakan.
  4. Baca tabel di bawahnya: setiap kecocokan dengan posisi awal dan akhir, serta satu baris per grup tangkap. Grup yang tidak ikut cocok ditandai, berbeda dari grup yang menangkap teks kosong.
  5. Untuk menulis ulang teks, isi "Ganti dengan". Aturannya sama dengan String.prototype.replace: $1 adalah grup 1, $<nama> grup bernama, $& seluruh kecocokan, dan $$ tanda dolar.

Flag

i mengabaikan huruf besar/kecil, m membuat ^ dan $ berlaku di setiap baris, s membuat titik mencakup baris baru, u membaca teks per titik kode (emoji dihitung satu karakter), v adalah versi u yang lebih ketat, dan y hanya cocok tepat di titik awal pencarian. Posisi dihitung dalam unit UTF-16 mulai dari 0, seperti di JavaScript.

Contoh

Dengan teks 2026-10-13 dan pola (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}), ada satu kecocokan di posisi 0 sepanjang 10 karakter dengan tiga grup: 2026, 10, dan 13. Jika "Ganti dengan" diisi $<day>/$<month>/$<year>, pratinjaunya 13/10/2026. Contoh lain: pada <b>tebal</b> dan <i>miring</i>, pola <.+> menangkap seluruh string karena .+ mengambil sebanyak mungkin, sedangkan <.+?> menangkap tiap tag sendiri-sendiri.

Mengapa pola bisa macet

Beberapa pola menjadi dua kali lebih lama pada setiap karakter tambahan: inilah backtracking katastrofik. Kasus klasiknya ^(a+)+$ pada deretan panjang huruf a yang diakhiri b. Pada layanan web ini risiko denial of service (ReDoS). Halaman ini menjalankan pencarian di worker latar belakang dan menghentikannya setelah 2 detik, sehingga tab tidak membeku. Perbaikannya biasanya menghapus pengulangan bersarang: ^a+$ memberi hasil yang sama seketika.

Kesalahan umum

  • Lupa meng-escape: titik cocok dengan karakter apa saja; untuk titik sungguhan tulis \..
  • Mengira ^ dan $ berlaku per baris tanpa flag m.
  • Lupa g saat mengganti sehingga hanya kecocokan pertama yang berubah.
  • Menempel pola lengkap dengan garis miring dan flag seperti /ab+c/gi. Ketik hanya bagian di antara garis miring dan gunakan tombol flag.

Untuk melihat apa yang berubah akibat penggantian, tempel kedua versi di pembanding teks. Dan jika Anda ingin menjadwalkan tugas, bukan mencari teks, penjelas cron membacakan jadwal dengan kata-kata.

Pertanyaan yang sering diajukan

Dialek regex apa yang dipakai?

JavaScript (ECMAScript) bawaan browser Anda, cocok untuk JavaScript, TypeScript, dan Node.js. Di Python, PHP, Java, atau .NET kebanyakan pola umum berjalan sama, tetapi periksa fitur khusus tiap bahasa.

Apakah teks saya diunggah ke server?

Tidak. Pola dan teks tetap di browser dan diproses oleh worker di perangkat Anda. Tidak ada yang dikirim lewat jaringan.

Mengapa pola saya dihentikan setelah 2 detik?

Kemungkinan polanya mengalami backtracking katastrofik: pengulangan bersarang seperti (a+)+ pada teks panjang membuat mesin mencoba jalur dalam jumlah eksponensial. Alat ini menghentikannya agar halaman tetap bisa dipakai. Sederhanakan pola atau batasi pengulangannya.

Mengapa posisinya berbeda dari editor saya?

Di sini posisi adalah indeks string JavaScript, dalam unit UTF-16 mulai dari 0. Emoji menempati dua unit, sedangkan editor mungkin menghitung per baris dan kolom.