Regex Tester
Tes regular expression JavaScript secara langsung dengan kecocokan yang disorot, grup tangkapan, penggantian teks, dan penjelasan setiap token.
| # | Posisi | Kecocokan | Grup |
|---|
Penjelasan pola
Peringatan: sebuah grup yang diulang berisi kuantifier terbuka lainnya, misalnya (a+)+. Pola seperti ini bisa memakan waktu eksponensial pada teks yang hampir cocok (catastrophic backtracking).
Cara menggunakan regex tester
- Ketik pola Anda di Regular expression, tanpa garis miring pengapit. Garis miring dan flag yang aktif ditampilkan di sekitar kolom, seperti
/pola/g. - Centang Flag yang Anda perlukan:
g(global),i(abaikan huruf besar/kecil),m(multiline),s(dotAll),u(unicode), atauy(sticky). - Tempel teks yang ingin dicari ke Teks uji. Kecocokan disorot saat Anda mengetik, dan tabel mencantumkan setiap kecocokan beserta posisi dan grup tangkapannya.
- Untuk mencoba substitusi, isi Pengganti. Kotak Hasil setelah penggantian menampilkan teks dengan setiap kecocokan diganti, siap untuk disalin.
- Baca Penjelasan pola untuk memeriksa fungsi setiap bagian regex Anda. Bingung harus mulai dari mana? Klik Muat contoh.
Apa saja yang ditampilkan tester
- Kecocokan yang disorot: setiap kecocokan di teks uji ditandai, sehingga Anda bisa langsung melihat apa yang tertangkap dan apa yang terlewat.
- Tabel kecocokan: nomor setiap kecocokan, posisinya (offset karakter dari awal, dihitung mulai 0), teks yang cocok, dan nilai setiap grup tangkapan. Grup bernama seperti
(?<year>\d{4})tampil dengan namanya, dan grup yang tidak ikut dalam kecocokan ditampilkan sebagai “(tidak cocok)”. 1.000 kecocokan pertama dicantumkan. - Pengganti: teks pengganti memakai sintaksis JavaScript:
$1atau$2untuk grup bernomor,$<name>untuk grup bernama,$&untuk seluruh kecocokan, dan$$untuk tanda dolar literal. Tanpa flagg, hanya kecocokan pertama yang diganti. - Penjelasan: pola dipecah menjadi token (teks literal, kelas karakter, anchor, grup, kuantifier, lookaround, backreference), masing-masing dengan deskripsi singkat. Grup bersarang ditampilkan menjorok, sehingga pola yang panjang jauh lebih mudah ditinjau.
Ringkasan flag
| Flag | Efek |
|---|---|
g |
Mencari semua kecocokan alih-alih berhenti di yang pertama |
i |
Mengabaikan perbedaan huruf besar dan kecil |
m |
^ dan $ cocok di awal dan akhir setiap baris |
s |
. juga cocok dengan jeda baris |
u |
Mode Unicode penuh: \u{…}, \p{…}, dan emoji ditangani sebagai satu karakter |
y |
Sticky: setiap kecocokan harus dimulai tepat di tempat kecocokan sebelumnya berakhir |
Catastrophic backtracking
Beberapa pola memakan waktu eksponensial pada teks yang hampir cocok. Contoh klasiknya adalah (a+)+$ yang diuji pada deretan panjang a yang diikuti b: mesin mencoba setiap cara membagi huruf a di antara kedua kuantifier sebelum menyerah. Masalah ini, yang dikenal sebagai ReDoS, pernah melumpuhkan situs web sungguhan.
Alat ini melindungi browser Anda dengan tiga cara. Pencocokan berjalan di background worker yang dihentikan setelah 1,5 detik; teks uji dibatasi 100.000 karakter; dan penjelasan memperingatkan Anda saat sebuah grup yang diulang berisi kuantifier terbuka lainnya. Jika sebuah pola kehabisan waktu, tulis ulang agar setiap karakter hanya bisa dicocokkan dengan satu cara, misalnya a+$ alih-alih (a+)+$.
Pertanyaan yang sering diajukan
Varian regex apa yang dipakai alat ini?
Alat ini memakai mesin JavaScript (ECMAScript) di browser Anda, persis seperti new RegExp() dan String.prototype.replace() di kode Anda. Sebagian besar sintaksis sama dengan PCRE, Python, dan Java, tetapi ada fitur yang berbeda: kuantifier posesif dan grup atomik tidak ada di JavaScript, sedangkan lookbehind didukung di semua browser terkini.
Mengapa pola saya hanya menemukan satu kecocokan?
Flag g tidak aktif. Tanpa flag ini, JavaScript berhenti setelah kecocokan pertama, dan penggantian hanya mengubah kecocokan itu.
Bagaimana cara mencocokkan titik, kurung siku, atau tanda tanya secara literal?
Escape dengan backslash: \., \[, \?. Penjelasan menampilkan karakter yang di-escape dengan keterangan “(di-escape)” agar Anda bisa memeriksanya.
Apakah teks saya dikirim ke mana pun?
Tidak. Pola dan teks hanya diproses di browser Anda, sehingga alat ini aman untuk file log atau data yang berisi informasi pribadi.
Mengapa posisinya berbeda dengan kolom di editor saya?
Posisi menghitung karakter mulai dari 0, melintasi semua baris, seperti match.index di JavaScript. Jeda baris dihitung sebagai satu karakter, dan emoji di luar Basic Multilingual Plane dihitung sebagai dua.
Alat terkait
- JSON Formatter dan Validator JSON formatter dan validator gratis untuk merapikan, minify, dan memeriksa JSON di browser Anda, dengan kesalahan sintaksis yang dilaporkan per baris dan kolom.
- URL Encoder dan Decoder URL encoder dan decoder gratis. Encode parameter query atau URL lengkap, decode urutan %XX, dan tangani + sebagai spasi. Berjalan di browser Anda.
- Generator Hash Buat hash MD5, SHA-1, SHA-256, dan SHA-512 dari teks atau file berukuran berapa pun, dan verifikasi checksum. Semuanya berjalan di browser Anda.