Penguji Regex
Bangun dan uji ekspresi reguler terhadap teks Anda sendiri secara real-time. Lihat setiap kecocokan tersorot, periksa grup tangkap, dan pratinjau hasil penggantian — semuanya di browser Anda.
/
/g
Flag
Tips: aktifkan flag g untuk mengganti setiap kecocokan, bukan hanya yang pertama.
Cara menggunakan Penguji Regex
- 1
Tulis pola Anda
Ketik ekspresi reguler di bidang pola, lalu aktifkan/nonaktifkan chip flag (g, i, m, dan lainnya) untuk mengatur secara tepat bagaimana pencocokan bekerja.
- 2
Tambahkan teks uji Anda
Tempel teks yang ingin Anda cari ke kotak “String uji”. Kecocokan langsung tersorot saat Anda mengetik atau menyunting pola.
- 3
Periksa kecocokannya
Tinjau setiap kecocokan, posisinya dalam teks, serta grup tangkap atau grup bernama mana pun di daftar hasil untuk memastikan pola berperilaku sesuai harapan.
- 4
Ganti atau salin
Masukkan teks pengganti untuk melihat pratinjau substitusi dengan referensi balik gaya $1, lalu salin hasilnya langsung ke kode atau dokumen Anda.
Ekspresi Reguler dalam Praktik: Panduan Lapangan untuk Pengembang
Apa yang sebenarnya digambarkan sebuah regex
Ekspresi reguler adalah bahasa pola mungil untuk mendeskripsikan kumpulan string. Alih-alih bertanya apakah teks sama dengan nilai tetap, Anda mendeskripsikan bentuknya — sederet digit, sebuah kata diikuti tanda at dan sebuah domain, tiga huruf lalu tanda hubung — dan mesin memindai teks Anda untuk setiap substring yang cocok. Satu gagasan tunggal itu menggerakkan validasi, cari-dan-ganti, penguraian log, tokenisasi, dan ekstraksi data di hampir setiap bahasa dan editor.
Penguji ini menggunakan mesin JavaScript (ECMAScript) yang tertanam di browser Anda, mesin yang sama yang dipakai Node.js dan aplikasi web. Jadi pola yang cocok di sini berperilaku identik di kode aplikasi Anda, yang menjadikannya sandbox tepercaya untuk membangun dan men-debug sebuah pola sebelum Anda menempelkannya ke dalam proyek.
Kelas karakter dan blok penyusunnya
Sebagian besar pola hanyalah karakter literal yang mencocokkan dirinya sendiri, diselingi segelintir token khusus. Sebuah kelas karakter di dalam tanda kurung siku mencocokkan satu karakter mana pun dari sebuah himpunan: rentang huruf kecil, himpunan huruf vokal, atau sebuah digit. Singkatan backslash-d mencocokkan satu digit, backslash-w mencocokkan karakter kata (huruf, digit, garis bawah), backslash-s mencocokkan whitespace, dan tanda titik mencocokkan karakter apa pun kecuali baris baru. Tuliskan singkatan itu dengan huruf kapital untuk membalikkannya — backslash-D adalah karakter apa pun yang bukan digit.
Inilah atom-atom yang Anda gabungkan menjadi segala hal lainnya. Pola untuk warna heksadesimal, misalnya, adalah sebuah jangkar untuk tanda pagar diikuti kelas karakter berisi digit heksadesimal yang diulang; pola untuk sebuah kata cukup backslash-w yang diulang satu kali atau lebih. Bangunlah pola dari potongan-potongan kecil ini alih-alih meraih satu ekspresi raksasa.
Jangkar, kuantor, dan alternasi
Jangkar mencocokkan posisi, bukan karakter. Tanda caret mencocokkan awal string (atau awal sebuah baris dengan flag multiline) dan tanda dolar mencocokkan akhirnya; token batas kata backslash-b mencocokkan tepi antara karakter kata dan karakter bukan-kata, yang merupakan cara mencocokkan satu kata utuh tanpa ikut menangkapnya di dalam kata yang lebih panjang. Kuantor mengendalikan pengulangan: tanda plus berarti satu kali atau lebih, tanda bintang berarti nol kali atau lebih, dan tanda tanya berarti opsional. Anda juga dapat menentukan jumlah pasti atau sebuah rentang menggunakan bentuk kurung kurawal ketika Anda membutuhkan, katakanlah, sebuah nilai yang berulang dua sampai empat kali.
Alternasi dengan simbol pipa berarti atau — pola cat atau dog mencocokkan salah satu kata. Bungkus alternatif dalam tanda kurung untuk membatasi cakupan pilihan. Secara default kuantor bersifat rakus, mengambil sebanyak yang mereka bisa; tambahkan tanda tanya setelah sebuah kuantor agar ia menjadi malas dan mencocokkan sesedikit mungkin, yang biasanya menjadi perbaikan ketika pola yang dimaksudkan menangkap satu tag justru menelan segalanya sampai tag terakhir di baris itu.
Grup tangkap dan cara menggunakannya
Tanda kurung menjalankan dua tugas: ia mengelompokkan sebagian pola dan ia menangkap apa yang dicocokkan bagian itu. Setelah sebuah kecocokan, potongan-potongan yang ditangkap tersedia sebagai grup bernomor — pasangan tanda kurung pertama adalah grup satu, berikutnya adalah grup dua — dan daftar hasil di sini menampilkan masing-masing sehingga Anda bisa memastikan Anda menarik keluar persis fragmen yang Anda maksudkan. Pola untuk string mirip-email dengan tanda kurung terpisah di sekeliling bagian lokal, domain, dan ekstensinya memungkinkan Anda membaca kembali ketiga potongan itu satu per satu.
Grup bernama, yang ditulis dengan sintaks yang menempatkan sebuah nama di dalam tanda kurung sudut tepat setelah tanda kurung pembuka, memberi tangkapan itu label yang mudah dibaca alih-alih sekadar angka dan muncul di bagiannya sendiri. Ketika Anda hanya menginginkan pengelompokan tanpa beban penangkapan, sebuah grup tanpa tangkap — tanda kurung pembuka diikuti tanda tanya dan titik dua — menjaga nomor grup Anda tetap rapi. Tangkapan-tangkapan inilah yang juga dirujuk oleh langkah penggantian Anda.
Flag mengubah seluruh kecocokan
Flag adalah pengubah yang mengubah cara seluruh pola diterapkan. Global menemukan setiap kecocokan alih-alih berhenti di yang pertama, yang penting untuk mengganti semua kemunculan, bukan hanya satu. Abaikan-huruf-besar/kecil membuat huruf cocok terlepas dari kapitalisasi. Multiline mendefinisikan ulang jangkar caret dan dolar agar cocok di setiap pergantian baris alih-alih hanya di paling awal dan akhir masukan.
Flag selebihnya bersifat situasional tetapi penting. Dotall membuat tanda titik ikut mencocokkan karakter baris baru, sehingga sebuah pola dapat membentang lintas baris. Unicode mengaktifkan penanganan Unicode penuh untuk titik kode di luar rentang dasar dan untuk escape properti Unicode. Sticky menambatkan setiap kecocokan ke posisi tepat setelah kecocokan sebelumnya, yang merupakan cara tokenizer menyusuri masukan tanpa melompat ke depan. Aktifkan atau nonaktifkan flag di sini dan amati kecocokan yang tersorot berubah untuk membangun intuisi terhadap masing-masing flag.
Pola yang akan terus-menerus Anda tulis
Beberapa bentuk muncul lagi dan lagi. Menarik semua bilangan bulat dari segumpal teks adalah backslash-d yang diulang satu kali atau lebih dengan flag global. Pemeriksaan email kasar adalah satu atau lebih karakter kata, sebuah tanda at, satu atau lebih karakter kata, sebuah tanda titik literal, dan sederet huruf pendek — memadai untuk penyaringan cepat sekadar masuk akal, meski sengaja dibuat longgar. Memangkas atau memadatkan rentetan whitespace, memvalidasi sebuah slug berisi huruf kecil dan tanda hubung, serta mengekstrak isi di antara dua penanda semuanya merupakan pekerjaan sehari-hari.
Tahan dorongan untuk memvalidasi format yang benar-benar rumit dengan satu pola raksasa. Tata bahasa email dan URL khususnya terkenal sulit ditangkap sepenuhnya dalam sebuah regex; untuk itu, sebuah pola longgar ditambah parser sungguhan atau pustaka khusus biasanya mengalahkan ekspresi tak terbaca yang akan Anda takuti untuk disentuh enam bulan kemudian.
Backtracking katastrofik dan cara menghindarinya
Backtracking pada mesin itulah yang membuat regex ampuh, tetapi ia juga bisa membuat sebuah pola meledak. Ketika dua bagian pola yang berkuantor dapat mencocokkan karakter yang sama dengan banyak cara yang saling tumpang tindih — contoh klasiknya adalah sebuah grup yang dirinya sendiri diulang, di mana pengulangan dalam dan luar saling bersaing — mesin mungkin mencoba kombinasi dalam jumlah astronomis terhadap sebuah string yang pada akhirnya gagal cocok. Pada masukan yang panjang ini bisa membeku selama beberapa detik atau menggantung sepenuhnya, dan di server ia menjadi vektor serangan penolakan layanan yang dikenal sebagai ReDoS.
Pertahanannya bersifat struktural. Hindari menyarangkan satu kuantor di dalam kuantor lain yang dapat mencocokkan hal yang sama, utamakan kelas karakter yang lebih spesifik ketimbang tanda titik yang permisif agar setiap langkah hanya punya satu cara mengonsumsi masukan, dan jangkarkan pola itu jika Anda bisa. Jika Anda harus menguji sebuah pola berisiko, lakukan di sini terlebih dahulu terhadap string skenario terburuk yang realistis, di mana pola yang lepas kendali hanya merugikan Anda satu tab browser alih-alih sebuah gangguan di lingkungan produksi.
Mempratinjau penggantian dengan aman
Cari-dan-ganti adalah tempat regex membuktikan nilainya setiap hari, dan bidang penggantian memungkinkan Anda melihat pratinjau hasil sebelum menerapkannya di mana pun. Rujuk grup tangkap Anda dalam teks pengganti dengan tanda dolar dan nomor grup — dolar-satu menyisipkan apa pun yang dicocokkan grup pertama — sehingga Anda dapat menata ulang sebuah tanggal, memformat ulang sebuah nama, atau membungkus kecocokan dengan markup. Ingat bahwa tanpa flag global hanya kecocokan pertama yang diganti; aktifkan global untuk mengubah setiap kemunculan.
Semuanya berjalan secara lokal di browser Anda menggunakan mesin bawaan, sehingga tidak ada yang Anda tempel — baris log, kode sumber, data pelanggan — yang diunggah, dicatat, atau disimpan. Itu menjadikan penguji ini tempat yang aman untuk berulang kali menyempurnakan sebuah contoh dunia nyata sampai baik kecocokan maupun keluaran penggantiannya benar-benar tepat, lalu menyalin pola yang sudah jadi ke dalam kode Anda dengan percaya diri.
Pertanyaan yang sering diajukan
Apa itu ekspresi reguler?
Varian regex apa yang digunakan penguji ini?
Apa arti flag-flag tersebut?
Bagaimana cara kerja grup tangkap?
Apakah data saya dikirim ke server?
Alat terkait
Lanjutkan dengan alat praktis ini