Tanpa unggah, 100% lokal, tanpa akun

Tutorial

Cara menguji regex tanpa memasang apa pun

Anda telah menulis sebuah pola dan perlu tahu apakah ia benar-benar cocok dengan yang Anda harapkan sebelum memasukkannya ke dalam kode. Memasang alat desktop atau menempelkan log pribadi ke situs web sembarangan terlalu berlebihan, dan sering kali berisiko. Panduan ini menunjukkan cara menjalankan regex terhadap teks Anda sendiri langsung di peramban, mengaktifkan dan menonaktifkan flag yang mengubah perilaku, membaca grup tangkapan yang ditariknya, dan melihat kecocokan disorot secara sebaris, dengan pola maupun teks tidak pernah meninggalkan tab Anda.

Langkah demi langkah

  1. Buka penguji regex dan ketik pola Anda di kolom di antara dua garis miring. Anda tidak menulis garis miringnya sendiri: alat ini menampilkannya agar Anda melihat pola sebagaimana sebuah mesin membacanya. Tempelkan contoh teks Anda ke kotak di bawah, misalnya beberapa baris log, daftar email, atau blok kode yang ingin Anda telusuri.
    Sebuah pola regex dan string flag dimasukkan di penguji, dengan contoh teks ditempel ke kotak di bawah
  2. Atur flag di kotak kecil di sebelah pola. Flag g menemukan setiap kecocokan alih-alih berhenti pada yang pertama; i membuat kecocokan tidak peka huruf besar-kecil; m membuat jangkar ^ dan $ mencocokkan awal dan akhir setiap baris alih-alih seluruh teks; s membuat titik juga mencocokkan jeda baris. Gabungkan semuanya dengan bebas, misalnya gim.
  3. Tekan Uji. Setiap kecocokan disorot langsung di teks Anda, dan daftar di bawah menampilkan setiap kecocokan dengan posisinya serta nilai dari setiap grup tangkapan. Sesuaikan pola dan jalankan lagi: pratinjau diperbarui sehingga Anda dapat mempersempit pola hingga ia menangkap persis apa yang Anda maksud dan tidak yang lain.
    Hasil uji: kecocokan disorot sebaris dan daftar yang menampilkan posisi tiap kecocokan serta grup tangkapannya

Grup tangkapan, bernama dan bernomor

Grup tangkapan adalah bagian pola Anda yang dibungkus dalam tanda kurung, dan itulah cara Anda menarik sepotong dari setiap kecocokan alih-alih hanya memastikan keseluruhannya cocok. Grup bernomor dihitung dari kiri ke kanan berdasarkan kurung pembukanya: dalam (\d{4})-(\d{2})-(\d{2}) grup 1 adalah tahun, grup 2 bulan, grup 3 hari. Grup bernama memakai sintaks (?<name>...), sehingga (?<year>\d{4}) jauh lebih mudah dibaca daripada nomor polos saat pola bertambah panjang. Jika Anda hanya ingin mengelompokkan tanpa menangkap, misalnya untuk menerapkan kuantifier pada beberapa karakter, gunakan grup non-tangkapan (?:...) agar tidak memenuhi daftar hasil Anda. Penguji menampilkan nilai setiap grup untuk setiap kecocokan, yang merupakan cara tercepat untuk memastikan Anda mengekstrak potongan yang tepat.

Ketika sebuah pola macet atau berperilaku salah

Dua masalah muncul berulang kali. Yang pertama adalah backtracking katastrofik: pola seperti (a+)+$ yang dijalankan terhadap string panjang yang tidak cocok dapat membuat mesin mencoba sejumlah jalur eksponensial dan membeku. Penguji menjalankan setiap uji dalam sebuah Web Worker dengan pengawas singkat, sehingga alih-alih tab yang macet Anda mendapat pesan yang jelas dan dapat menyederhanakan pola, biasanya dengan membuat kuantifier bersifat posesif dalam semangatnya, memberinya jangkar, atau menghindari pengulangan bersarang. Yang kedua adalah pencocokan rakus versus malas: secara bawaan .* mengambil sebanyak mungkin, jadi untuk mencocokkan isi satu tag HTML Anda menginginkan bentuk malas .*? sebagai gantinya. Jika Anda membandingkan dua versi string yang sedikit berbeda untuk melihat apa yang seharusnya disasar pola Anda, alat beda teks menyejajarkannya sehingga perbedaannya jelas sebelum Anda menulis ekspresinya.

Cara browser mengevaluasi regex Anda

Browser modern dilengkapi dengan engine regex ECMAScript bawaan yang mendukung set flag lengkap: pencocokan case-insensitive (i), mode multiline (m), dotAll (s), Unicode (u), dan flag sticky (y). Saat Anda mengetik pola di tester, engine mengkompilasinya ke NFA internal dan mengevaluasinya terhadap string uji Anda secara real time, melaporkan setiap posisi kecocokan dan grup tangkapan apa pun. Backtracking terjadi secara lokal di CPU Anda: pola seperti (a+)+ pada string yang tidak cocok yang panjang dapat berputar selama beberapa detik, dan melihat jeda itu di browser adalah umpan balik yang berguna sebelum menerapkan pola dalam kode produksi. Tidak ada teks yang meninggalkan halaman, sehingga Anda dapat menempelkan sampel log atau input apa pun tanpa mengarahkannya melalui server pihak ketiga.

Alat yang digunakan dalam panduan ini

Pertanyaan yang sering diajukan

Apakah pola atau teks uji saya dikirim ke server?

Tidak. Regex berjalan di dalam Web Worker di peramban Anda sendiri, sehingga pola dan teks yang Anda uji tetap berada di tab. Ini penting karena teks yang Anda tempel sering kali berupa log nyata, daftar pelanggan, atau konfigurasi internal, persis jenis data yang tidak ingin Anda taruh di server orang lain. Buka panel Jaringan di peralatan pengembang Anda saat menekan Uji dan Anda tidak akan melihat satu permintaan pun membawa teks Anda keluar. Ia juga tetap bekerja luring setelah halaman dimuat.

Varian regex mana yang dipakai penguji?

Ia memakai mesin ekspresi reguler JavaScript yang sudah terpasang di peramban Anda, sama dengan yang berjalan di Node.js dan di halaman web mana pun. Itu mencakup sintaks umum: kelas karakter, kuantifier, jangkar, alternasi, grup tangkapan bernomor dan bernama, lookahead dan lookbehind. Beberapa fitur dari varian lain, seperti rekursi gaya Perl atau kuantifier posesif, bukan bagian dari mesin JavaScript, jadi jika sebuah pola yang Anda salin dari proyek PHP atau Python berperilaku berbeda, perbedaan varian itu biasanya penyebabnya.

Sumber