Fungsi alat ini
Penguji regex PCRE memeriksa ekspresi reguler terhadap teks Anda memakai pustaka PCRE2 asli, mesin yang sama dengan yang dipakai PHP, alat bergaya Perl, dan banyak web server. Kecocokan disorot, setiap kecocokan dicantumkan beserta posisi dan grup tangkapannya, dan penggantian opsional menampilkan hasil substitusi ala preg_replace.
Menguji dengan mesin asli itu penting karena ekspresi reguler PCRE dan JavaScript berbeda dalam hal-hal kecil namun krusial. Pola yang berjalan di penguji berbasis browser bisa gagal dikompilasi di PHP, atau mencocokkan hal yang berbeda.
Cara menggunakannya
- Ketik pola tanpa delimiter di Pola PCRE (tanpa delimiter).
- Tempel teks yang ingin dicari ke String uji.
- Aktifkan modifier yang Anda perlukan: g untuk semua kecocokan (seperti preg_match_all), i, m, s, x, U, dan u untuk
\w,\d, dan\byang sadar Unicode. - Jika perlu, isi Ganti dengan untuk melihat pratinjau substitusi. Gunakan
$1atau${1}untuk grup bernomor,${name}untuk grup bernama, dan$0untuk seluruh kecocokan.
Pola yang tidak valid menampilkan pesan error PCRE2 sendiri beserta posisi di pola tempat mesin berhenti.
Contoh
Pola bawaan \((?:[^()]++|(?R))*\) menemukan pasangan tanda kurung yang seimbang. Pola ini mencocokkan sepasang kurung yang berisi karakter selain kurung atau, secara rekursif, seluruh pola itu lagi. Pada teks contoh, pola ini menemukan (a, g(b, c)) dan ((x), y) serta mengabaikan kurung yang tidak ditutup di akhir. Ekspresi reguler JavaScript tidak bisa menyatakan hal ini.
Coba (?<amount>\d+(?:\.\d+)?)\s+(?<cur>USD|EUR) dengan penggantian ${cur} $1 untuk menukar posisi jumlah dan kode mata uang di baris kedua.
Fitur PCRE yang perlu diketahui
- Possessive quantifier (
*+,++,?+) dan grup atomik ((?>...)) tidak pernah melepaskan kembali apa yang sudah dicocokkan, sehingga mencegah backtracking yang tak terkendali. \Kmengatur ulang awal kecocokan, alternatif sederhana untuk lookbehind.- Rekursi dengan
(?R),(?1), atau(?&name)mencocokkan struktur bersarang. - Modifier inline seperti
(?i)mengubah perilaku untuk sebagian pola.
Tips
- Di PHP, bungkus pola dengan delimiter seperti
/.../atau~...~dan pilih yang tidak muncul di dalam pola, agar Anda tidak perlu meng-escape-nya. - Aktifkan u saat teks Anda berisi huruf beraksen atau karakter CJK agar
\wikut mencocokkannya.
FAQ
› Apa bedanya dengan penguji regex JavaScript?
Halaman ini menjalankan PCRE2, mesin di balik fungsi preg_ milik PHP, Nginx, Apache, dan banyak alat lain, yang dikompilasi ke WebAssembly. Mesin ini mendukung sintaks yang tidak dimiliki JavaScript, seperti rekursi dengan (?R), possessive quantifier seperti a++, grup atomik, \K, grup (?P<name>...), serta modifier x dan U.
› Apakah saya perlu mengetik delimiter, seperti /pattern/i?
Tidak. Masukkan polanya saja dan aktifkan modifier lewat kotak centang. Di PHP, `preg_match('/\d+/i', $s)` setara dengan pola `\d+` dengan Abaikan huruf besar/kecil diaktifkan.
› Mengapa saya mendapat "match limit exceeded"?
Beberapa pola, seperti ^(a+)+$ pada string panjang yang tidak cocok, melakukan backtracking dalam jumlah eksponensial. Penguji ini berhenti setelah lima juta langkah agar halaman tetap responsif. PHP punya pengaman serupa, pcre.backtrack_limit, dan preg_match mengembalikan false saat batas itu tercapai.
› Apakah teks saya diunggah?
Tidak. Modul WebAssembly PCRE2 diunduh sekali dan semuanya berjalan di browser Anda.