Bagaimana regex berfungsi dalam pelayar anda?
Setiap runtime JavaScript menghantar enjin ungkapan nalar asli — new RegExp(pattern, flags) mengkompil corak anda, kemudian kaedah seperti String.prototype.match, String.prototype.replace, dan RegExp.prototype.exec menjalankannya terhadap mana-mana rentetan input. Penguji ini membungkus enjin tersebut dalam antara muka supaya anda boleh mengedit, menjalankan, dan memeriksa corak tanpa meninggalkan pelayar anda. Tiada apa yang anda taip — corak, bendera, rentetan ujian, atau penggantian — dihantar melalui rangkaian.
Bagaimana penguji regex berfungsi?
Saluran paip terdiri daripada beberapa langkah pendek, semuanya berjalan sisi klien pada setiap ketukan kekunci (dinyahhantarkan kepada 150 ms supaya pengetikan kekal lancar):
- Badan corak anda dibaca dari input di atas (tanpa pembatas
/di hadapan atau belakang — ia hiasan sahaja). Pil bendera yang dipilih digabungkan menjadi rentetan bendera sepertigiataugimsuy. new RegExp(patternBody, flags)mengkompil corak. Jika enjin melemparSyntaxError(contoh: kurungan tidak sepadan atau lepas tidak sah), mesej dipaparkan di atas rentetan ujian dan senarai padanan dibersihkan. Ralat kompil ialaherr.messagesebenar dari V8 / SpiderMonkey / JavaScriptCore jadi ia sepadan dengan apa yang anda lihat dalam DevTools.- Untuk senarai padanan, penguji sentiasa menghitung dengan bendera global sintetik — jadi walaupun anda matikan
g, senarai masih menunjukkan setiap padanan. Penjaga padanan lebar sifar piawai (if (m.index === rx.lastIndex) rx.lastIndex++) menghalang gelung daripada berpusing pada corak yang memadankan rentetan kosong. Mod Gantian menghormati set bendera sebenar anda jadi$&berkelakuan sama sepertiString.prototype.replace. - Antara setiap lelaran, penguji menyemak
performance.now() - startdan membatalkan setelah 50 ms berlalu. Ini melindungi daripada backtracking bencana pada input seperti(a+)+$terhadap jujukan panjanga— tab sebaliknya akan tergantung. Penjaga ini adalah usaha terbaik: corak padanan-tunggal patologi masih boleh menggunakan masa dalam satu panggilanexec. Jika itu berlaku, muat semula tab dan tulis semula corak dengan kuantifier tidak-tamak atau possesif gaya atom (contoh:[^x]*x). - Rentetan ujian dibahagikan kepada segmen pada julat setiap padanan dan segmen yang dipadankan dibungkus dalam elemen
<mark class="rx-match rx-cap-N">, di manaNbergilir melalui enam warna palet supaya padanan bersebelahan mudah dibezakan. Kumpulan bernombor setiap padanan (m[1],m[2], …) dan kumpulan bernama (m.groups) dipaparkan sebagai baris berlabel di bawah; jika benderadditetapkan, indeks[start, end]setiap kumpulan juga ditunjukkan.
Mengapa menggunakan penguji regex ini?
- Privasi: setiap corak, rentetan ujian, dan penggantian berjalan dalam pelayar anda menggunakan enjin JavaScript RegExp terbina. Tiada apa yang meninggalkan tab — penting apabila input ialah log pelanggan, corak kelayakan yang bocor, atau apa-apa yang tidak akan anda tampalkan ke taman permainan regex SaaS yang dihoskan.
- Rasa sebenar: penguji mendedahkan enjin regex tepat yang dijalankan oleh Node.js, Chrome, Safari, Firefox, dan setiap pengesah borang berasaskan pelayar. Tiada lapisan terjemahan rasa Perl untuk menyembunyikan perbezaan halus — apa yang berfungsi di sini berfungsi dalam kod anda.
- Penyahpepijatan tangkap dan kumpulan bernama: setiap kumpulan bernombor (
$1,$2, …) dan kumpulan bernama ($<year>) ditunjukkan per padanan supaya anda boleh membina penghurai dan membaca slot kembali tanpa meneka. Mod Gantian membolehkan anda mencampurkan kumpulan dengan bebas —$2-$1menukar dua slot pertama,$<name>memasukkan slot bernama, dan$&menggema keseluruhan padanan. - Penjaga backtracking bencana: siling 50 ms pada penghitungan membatalkan corak patologi seperti
(a+)+$sebelum membekukan tab. Anda melihat ralat penjelasan dan bukannya pelayar tergantung, dan halaman pulih serta-merta.
Apakah aplikasi biasa penguji regex?
Ungkapan nalar muncul dalam pembangunan web, keselamatan, dan kerja data — penguji ini menyasarkan kes penggunaan yang paling biasa:
- Pengesahan borang: prototaip corak e-mel, telefon, atau poskod, tampal input sampel ke dalam rentetan ujian, dan sahkan setiap kes positif sepadan dan setiap kes negatif tidak sebelum anda menghantar corak ke kod pengeluaran.
- Pengikisan log: tampal sebahagian output log NGINX, aplikasi, atau audit, tulis corak dengan kumpulan bernama untuk bahagian yang anda pentingkan (
(?<ip>…) (?<path>…)), dan baca slot yang ditangkap per padanan untuk mengesahkan penghurai anda betul. - Carian-dan-gantian refaktor: gunakan Mod Gantian untuk menulis semula pengecam merentasi petikan —
(\w+)\.set(\w+)\(→$1.$2 =menukar panggilan getter kepada penetapan sifat, dan pratonton langsung menunjukkan hasilnya sebelum anda melakukannya kepada codemod.
Bagaimana contoh regex kelihatan?
Ambil corak (\d{4})-(\d{2})-(\d{2}) dengan bendera g, dijalankan terhadap rentetan ujian release 2025-11-15, prerelease 2026-05-25. Enjin menemui dua padanan. Padanan pertama ialah 2025-11-15 dengan kumpulan 1 = 2025, kumpulan 2 = 11, kumpulan 3 = 15. Padanan kedua ialah 2026-05-25 dengan bentuk kumpulan yang sama. Dalam Mod Gantian, templat penggantian $3/$2/$1 menulis semula kedua-dua tarikh kepada 15/11/2025 dan 25/05/2026 — penukaran ISO-ke-DMY satu corak yang boleh anda sahkan secara visual sebelum memasukkan corak ke dalam skrip.
Gunakan penguji ini sebagai laluan pantas untuk sebarang kerja regex — membina, menyahpepijat, atau menulis semula corak. Semua berjalan secara setempat; tiada apa yang dicatat; enjin regex ialah apa sahaja yang dihantar oleh pelayar anda, jadi kelakuan sepadan dengan apa yang akan dilihat oleh kod pengeluaran semasa runtime.