§

Corak

Bendera
§

Rentetan ujian

§

Padanan

0 padanan

    Tiada padanan lagi — taip corak dan rentetan ujian di atas.

    §

    Mod gantian

    Rujukan pantas

    Kelas aksara

    \d
    Sebarang digit, bersamaan dengan [0-9].
    \w
    Sebarang aksara perkataan — huruf, digit, atau garis bawah.
    \s
    Sebarang ruang putih — ruang, tab, baris baharu, dll.

    Sauh

    \b
    Penegasan lebar sifar pada sempadan perkataan.
    ^
    Permulaan input (atau setiap baris apabila bendera m ditetapkan).
    $
    Penghujung input (atau setiap baris apabila bendera m ditetapkan).

    Kuantifier

    *
    Sifar atau lebih token sebelumnya, tamak.
    +
    Satu atau lebih token sebelumnya, tamak.
    ?
    Sifar atau satu token sebelumnya — juga menjadikan kuantifier sebelumnya malas.
    {n,m}
    Antara n dan m pengulangan token sebelumnya.

    Kumpulan

    (...)
    Kumpulan tangkap — didedahkan sebagai $1, $2, … dalam penggantian.
    (?:...)
    Kumpulan tidak-tangkap — mengumpul tanpa menggunakan slot.
    (?...)
    Kumpulan tangkap bernama — didedahkan sebagai $ dalam penggantian.

    Lookaround

    (?=...)
    Lookahead positif — padankan hanya jika diikuti oleh …
    (?!...)
    Lookahead negatif — padankan hanya jika TIDAK diikuti oleh …
    (?<=...)
    Lookbehind positif — padankan hanya jika didahului oleh …
    (?
    Lookbehind negatif — padankan hanya jika TIDAK didahului oleh …

    Lepas

    \\
    Aksara garis miring terbalik literal.
    \.
    Titik literal — lepaskan mana-mana metaaksara untuk memadankannya secara literal.

    Ungkapan nalar JavaScript memainkan peranan penting dalam kerja pembangunan harian pembangun Malaysia: mengesahkan format nombor kad pengenalan (MyKad) dan nombor telefon tempatan dalam borang web, menghurai log Nginx pada pelayan Linux, menyaring input dalam aplikasi React sebelum dihantar ke backend Express, atau membersihkan rentetan dalam skrip automasi data. Sama ada anda membina semakan format akaun bank untuk perkhidmatan kewangan digital atau mengesahkan nombor kad kredit dalam sistem e-dagang, enjin RegExp ECMAScript yang sama berjalan dalam semua pelayar moden — apa yang berfungsi di sini berfungsi dalam kod pengeluaran anda.

    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):

    1. 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 seperti gi atau gimsuy.
    2. new RegExp(patternBody, flags) mengkompil corak. Jika enjin melempar SyntaxError (contoh: kurungan tidak sepadan atau lepas tidak sah), mesej dipaparkan di atas rentetan ujian dan senarai padanan dibersihkan. Ralat kompil ialah err.message sebenar dari V8 / SpiderMonkey / JavaScriptCore jadi ia sepadan dengan apa yang anda lihat dalam DevTools.
    3. 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 seperti String.prototype.replace.
    4. Antara setiap lelaran, penguji menyemak performance.now() - start dan membatalkan setelah 50 ms berlalu. Ini melindungi daripada backtracking bencana pada input seperti (a+)+$ terhadap jujukan panjang a — tab sebaliknya akan tergantung. Penjaga ini adalah usaha terbaik: corak padanan-tunggal patologi masih boleh menggunakan masa dalam satu panggilan exec. Jika itu berlaku, muat semula tab dan tulis semula corak dengan kuantifier tidak-tamak atau possesif gaya atom (contoh: [^x]*x).
    5. Rentetan ujian dibahagikan kepada segmen pada julat setiap padanan dan segmen yang dipadankan dibungkus dalam elemen <mark class="rx-match rx-cap-N">, di mana N bergilir 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 bendera d ditetapkan, 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-$1 menukar 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.