RevealTheme logo

Penguji Ekspresi Reguler

Uji ekspresi reguler JavaScript terhadap input apa pun. Lihat kecocokan, grup, dan penggantian secara waktu nyata.

0 kecocokan

Cara menggunakan alat ini

  1. 1

    Type your regular expression into the pattern field (no slashes — enter the bare pattern).

  2. 2

    Set the flags in the small field beside it, such as g, i, m, or a combination like gi.

  3. 3

    Paste or type the text you want to search into the large input box below.

  4. 4

    Read the match count and each matched substring with its character index in the results panel; an invalid pattern shows the engine's error message instead.

Apa itu ekspresi reguler dan bagaimana cara membacanya?

Ekspresi reguler (regex) adalah bahasa kecil yang spesifik untuk domain guna mencari pola dalam teks. Setiap bahasa pemrograman modern memiliki mesin regex; alat ini menggunakan RegExp asli JavaScript, yang mengikuti spesifikasi ECMAScript 2018+ dan mendukung fitur modern seperti asersi lookbehind, grup tangkap bernama, escape properti Unicode, dan flag dotAll. Blok dasarnya: karakter literal cocok dengan dirinya sendiri (regex 'kucing' cocok dengan kata kucing); kelas karakter cocok dengan salah satu dari sebuah kumpulan ('[a-z]' cocok dengan huruf kecil); kuantifier mengontrol pengulangan (* nol atau lebih, + satu atau lebih, ? nol atau satu, {3,5} antara 3 dan 5); jangkar cocok dengan posisi (^ awal string, $ akhir, \b batas kata); grup menangkap subkecocokan ((kucing|anjing) cocok dengan salah satunya, menangkap mana yang cocok); alternasi menawarkan pilihan. Regex unggul untuk mengurai teks yang terstruktur tetapi tidak gramatikal (log, email, nomor telepon, atribut HTML sederhana) dan gagal pada struktur yang benar-benar rekursif (HTML lengkap, JSON bersarang). Untuk itu, gunakan parser. Penguji ini memungkinkan Anda melakukan iterasi pada sebuah pola dengan umpan balik instan: ubah regex dan kecocokan akan dihitung ulang pada setiap ketukan.

Kasus penggunaan umum

  • Memvalidasi format input pengguna (email, nomor telepon, kode pos) sebelum dikirim ke server Anda.

  • Mengekstrak data terstruktur dari file log (timestamp, IP, kode status, path permintaan).

  • Melakukan cari-dan-ganti di ratusan file menggunakan pencarian regex editor Anda.

  • Menulis aturan penulisan ulang URL untuk Nginx, Apache .htaccess, atau rewrite Vercel.

  • Mem-parsing format mirip CSV sederhana yang tidak memerlukan parser sungguhan.

  • Membangun pola validasi formulir untuk atribut HTML <input pattern="...">.

Pertanyaan yang sering diajukan

Flag apa saja yang didukung?
g (global: menemukan semua kecocokan, bukan hanya yang pertama), i (tanpa membedakan huruf besar/kecil), m (multibaris: ^ dan $ cocok dengan jeda baris), s (dotAll: . cocok dengan jeda baris), u (unicode: penanganan karakter multibyte yang benar), y (sticky: hanya cocok pada lastIndex). Gabungkan flag dengan menggandengnya: 'gim' mengaktifkan global + tanpa membedakan huruf besar/kecil + multibaris.
Bagaimana cara mencocokkan beberapa baris?
Dua kebutuhan yang berbeda: 'm' membuat ^ dan $ cocok dengan jeda baris (memperlakukan setiap baris sebagai string terpisah untuk jangkar). 's' membuat . cocok dengan jeda baris (jika tidak, . cocok dengan semuanya kecuali jeda baris). Gunakan keduanya bersamaan jika Anda perlu mencocokkan pola yang merentang beberapa baris.
Apa perbedaan antara kuantifier rakus dan malas?
Kuantifier rakus (*, +, {n,m}) cocok dengan sebanyak mungkin. Yang malas (*?, +?, {n,m}?) cocok dengan sesedikit mungkin. Contoh klasik: regex '<.*>' pada '<a><b>' cocok dengan keseluruhan '<a><b>'; '<.*?>' hanya cocok dengan '<a>'.
Kapan saya TIDAK boleh menggunakan regex?
Ketika strukturnya benar-benar rekursif (HTML, JSON, tanda kurung berpasangan). Ketika Anda perlu menangani setiap kasus batas dengan benar (mengurai tanggal dengan zona waktu, nama dengan apostrof). Ketika tata bahasa input terdefinisi dengan baik dan ada pustaka pengurai. Jawaban terkenal di Stack Overflow: regex hebat untuk menemukan pola, buruk untuk mengurai bahasa.
Apa itu grup tangkap bernama?
Alih-alih (\d{4})-(\d{2})-(\d{2}) mengembalikan grup bernomor, gunakan (?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2}) dan akses kecocokan sebagai match.groups.year. Jauh lebih mudah dipelihara dalam kode nyata.
Mengapa regex saya lambat dengan input tertentu?
Backtracking katastrofik. Kuantifier bersarang seperti (a+)+ dapat memakan waktu eksponensial dengan input yang bersifat adversarial. Hindari kuantifier bersarang dan alternasi yang tumpang tindih. Mesin JavaScript tidak memiliki batas waktu, jadi regex yang buruk dapat menggantung sebuah permintaan. Untuk produksi, gunakan paket npm safe-regex untuk mendeteksi pola berisiko.
Apakah ini cocok dengan apa yang dilakukan mesin regex server saya?
Sebagian besar: ragam regex utama (PCRE, re Python, regex Ruby, Java) serupa tetapi memiliki perbedaan halus. Sintaks lookbehind, perilaku kelas karakter, dan penanganan Unicode bervariasi. Untuk paritas di produksi, ujilah juga dalam bahasa target.

Alat terkait