Penukar Percuma

Regex Penguji

Uji dan nyahpepijat ungkapan biasa serta-merta dalam penyemak imbas anda. Serlahkan padanan, lihat kumpulan tangkapan dan gunakan mod ganti — percuma dan peribadi.

//g
Bendera:

Tentang alat ini

Ungkapan biasa ialah bahasa khusus domain untuk memadankan corak dalam teks. Mereka telah menjadi sebahagian daripada pengkomputeran sejak 1968 dan kini terbina dalam setiap bahasa pengaturcaraan moden, editor teks dan alat carian baris arahan. Sintaksnya ringkas tetapi terdedah kepada ralat: perubahan kecil menghasilkan gelagat padanan yang berbeza secara halus, dan ungkapan kompleks menjadi tidak boleh dibaca dengan cepat. Penguji yang menunjukkan padanan dalam masa nyata semasa anda mengedit corak ialah cara paling berkesan untuk membangun dan mengesahkan regex.

Penguji ini berjalan dalam penyemak imbas anda menggunakan enjin regex JavaScript (yang sama yang digunakan oleh aplikasi anda jika ia berjalan dalam penyemak imbas). Kemas kini corak dan teks ujian secara reaktif: setiap perubahan sama ada menjalankan semula perlawanan. Kumpulan padanan diserlahkan, kumpulan yang ditangkap disenaraikan dan bendera (tidak peka huruf besar-besaran, berbilang baris, global) didedahkan untuk ujian.

Sintaks regex berbeza secara halus antara enjin. JavaScript mengikut spesifikasi ECMAScript; Python, PCRE (digunakan oleh PHP dan banyak lagi), Java, dan Go masing-masing mempunyai dialek mereka sendiri dengan ciri yang bertindih tetapi tidak serupa. Corak yang dibangunkan di sini menggunakan sintaks ECMAScript; mudah alih enjin silang memerlukan menyemak dokumentasi setiap sasaran.

Mengapa Menggunakan Penguji Regex

Pepijat regex terkenal sukar untuk nyahpepijat selepas penggunaan. Corak yang kelihatan munasabah mungkin sepadan dengan lebih atau kurang daripada yang dimaksudkan, gagal pada kes tepi atau mempunyai penjejakan ke belakang bencana pada input tertentu. Menguji corak secara interaktif terhadap input perwakilan menangkap isu sebelum semakan dan pengeluaran kod.

Corak juga mendapat manfaat daripada dokumentasi. Menunjukkan regex bersebelahan dengan input yang sepatutnya dipadankan dan input yang tidak sepadan menjadikan niat menjadi jelas. Penyelenggara masa depan (termasuk diri anda dalam enam bulan) menghargai kes ujian yang didokumenkan lebih daripada mereka menghargai satu baris yang bijak.

Cara menggunakan

Taip corak, taip input ujian, lihat padanan yang diserlahkan secara langsung.

  1. Masukkan corak anda: Taip corak regex dalam medan corak. Kedua-dua regex literal (/corak/bendera) dan bentuk corak sahaja berfungsi; bendera boleh ditetapkan melalui input bendera.
  2. Tambah input ujian: Tampal teks sampel yang patut dipadankan dengan corak (dan sebaiknya juga teks yang tidak sepadan dengannya). Penguji menjalankan corak terhadap input dan menyerlahkan padanan.
  3. Tetapkan bendera: Bendera biasa: g (global, cari semua padanan), i (tidak peka huruf besar-kecil), m (baris berbilang, ^ dan $ baris padanan bermula/tamat), s (dotall, . sepadan dengan baris baharu), u (Unicode).
  4. Periksa keputusan: Setiap perlawanan diserlahkan dalam input. Kumpulan tangkapan muncul dalam senarai dengan indeks dan nilai kumpulan. Penguji juga menunjukkan kiraan padanan dan sebarang ralat kompilasi dalam corak.

Kes Penggunaan Biasa

Butiran Teknikal

Regex JavaScript mengikut spesifikasi ECMAScript. Ciri utama: kelas aksara ([abc], [^abc]), pengkuantiti (*, +, ?, {n,m}), selang seli (|), pengelompokan ((...)), kumpulan penangkapan dan bukan penangkapan, pandang ke hadapan dan pandang belakang (enjin moden), rujukan belakang, kumpulan yang dinamakan, pelepasan sifat Unicode (dengan bendera u) dan set jujukan standard.

Perbezaan penting daripada PCRE dan Python: lihat belakang sokongan adalah terkini dalam JavaScript (2018+); kumpulan yang dinamakan menggunakan (?<nama>...) sintaks; sesetengah Unicode melarikan diri memerlukan bendera u berfungsi dengan betul. Corak yang dimaksudkan untuk penggunaan merentas bahasa hendaklah disemak pada setiap dokumentasi sasaran.

Prestasi: enjin regex berasaskan penjejakan belakang (kebanyakan termasuk JavaScript) boleh mengalami penjejakan ke belakang bencana pada corak patologi tertentu. Ujian yang menggantung penguji adalah tanda bahawa corak memerlukan pemudahan — lazimnya dengan mengelakkan pengkuantiti bersarang dan silih berganti yang tidak jelas.

Amalan Terbaik

Soalan lazim

Perisa regex yang manakah disokong oleh alat ini?
Ia menggunakan enjin RegExp terbina dalam JavaScript, yang menyokong sintaks standard termasuk lookaheads, lookaheads (dalam penyemak imbas moden), dinamakan kumpulan tangkapan dan sifat Unicode melarikan diri.
Bolehkah saya menguji penggantian regex?
ya. Tukar ke mod Ganti untuk memasukkan corak gantian. Anda boleh menggunakan $1, $2, dsb. untuk menangkap rujukan balik kumpulan dan $<nama> untuk kumpulan yang dinamakan.
Mengapa regex saya sepadan secara berbeza di sini daripada dalam Python/PHP?
Bahasa pengaturcaraan yang berbeza mempunyai enjin regex yang sedikit berbeza. JavaScript tidak menyokong pengkuantiti posesif atau beberapa ciri khusus PCRE. Sintaks teras (kelas aksara, pengkuantiti, kumpulan) adalah sama merentas bahasa.
Adakah alat itu menyimpan corak regex saya?
Tidak. Tiada apa-apa yang disimpan atau dihantar. Alat ini berjalan sepenuhnya dalam penyemak imbas anda. Anda boleh menanda halaman atau berkongsi corak dengan menyalin rentetan regex.
Bagaimanakah saya memadankan watak istimewa literal?
Melarikannya dengan garis miring ke belakang. Untuk memadankan titik literal: \. Untuk memadankan garis miring ke belakang literal: \\. Di dalam kelas watak [...], kebanyakan watak istimewa kehilangan maknanya.
Adakah penguji berjalan pada pelayan?
Tidak. Penyusunan dan pemadanan corak berlaku dalam penyemak imbas anda menggunakan objek RegExp asli.
Bolehkah saya menguji corak untuk enjin bukan JavaScript?
Kebanyakannya. Untuk corak mudah enjin utama bersetuju. Untuk ciri lanjutan (lihat di belakang, kumpulan atom, pengkuantiti milik, sifat Unicode melarikan diri), sahkan dengan dokumentasi enjin sasaran.
Adakah ia mengendalikan input yang sangat besar?
Sehingga beberapa megabait berfungsi dengan lancar. Input yang lebih besar mungkin memperlahankan atau menggantung penyemak imbas, terutamanya dengan corak yang terdedah kepada penjejakan ke belakang.