Regex Tester

Penguji Regex

Buat dan uji ekspresi reguler dengan sorotan kecocokan langsung, capture group, dan mode penggantian. Varian JavaScript, berjalan sepenuhnya di peramban Anda.

Regex JavaScript / ECMAScript (mesin yang sama dengan yang digunakan peramban Anda untuk RegExp native). Ini adalah superset ketat dari POSIX dan banyak tumpang tindih dengan Python re, Java Pattern, dan PCRE untuk fitur umum. Perbedaan yang perlu diperhatikan: JavaScript mendukung lookahead/lookbehind, grup bernama (melalui /(?...)/), dan flag /u dan /y. JavaScript TIDAK mendukung kuantifier posesif (a++, a*+), atomic group ((?>...)), atau branch-reset group — itu khusus PCRE.

Tidak. Seluruh alat ini adalah JavaScript di dalam halaman ini. Kompilasi pola, pencocokan, dan penggantian semuanya berjalan di peramban Anda melalui konstruktor RegExp native. Buka DevTools → Network dan amati — nol permintaan dikirim saat Anda mengetik. Aman untuk menempelkan regex yang cocok dengan log produksi, email pelanggan, atau apa pun yang tidak ingin Anda log oleh alat server.

/ /
Kecocokan
Penjelasan
Cheatsheet regex
. Karakter apa pun (kecuali baris baru; dengan flag /s, juga baris baru)
\d Digit apa pun (0-9)
\D Bukan digit
\w Karakter kata (a-z, A-Z, 0-9, _)
\W Bukan karakter kata
\s Spasi putih (spasi, tab, baris baru)
\S Bukan spasi putih
\b Batas kata
^ $ Awal / akhir string (atau baris, dengan flag /m)
* Nol atau lebih dari elemen sebelumnya
+ Satu atau lebih dari elemen sebelumnya
? Nol atau satu dari elemen sebelumnya (opsional)
{n,m} Antara n dan m dari elemen sebelumnya
(...) Capture group — disimpan ke $1, $2, …
(?:...) Grup non-capture — berguna untuk alternasi tanpa menangkap
(?<n>...) Capture group bernama — direferensikan sebagai $<n>
[abc] Kelas karakter — salah satu dari a, b, atau c
[^abc] Kelas karakter negasi — karakter apa pun kecuali a, b, c
a|b Alternasi — cocokkan a atau b
(?=...) Lookahead positif — diikuti oleh
(?!...) Lookahead negatif — tidak diikuti oleh
(?<=...) Lookbehind positif — didahului oleh
(?<!...) Lookbehind negatif — tidak didahului oleh
$1 $<n> Backreference dalam string pengganti — bernomor atau bernama

Mengapa iKit Regex Tester

Dirancang untuk pengembang yang menginginkan playground regex yang bersih dan cepat tanpa iklan, popup, atau pelacak pihak ketiga seperti pada alat lawas.

Sorotan kecocokan langsung

Ketik pola Anda dan lihat setiap kecocokan disorot di teks uji secara real time. Capture group ditampilkan di samping dengan rentang indeks dan kontennya.

Cocokkan + ganti dalam satu alat

Beralih ke mode Ganti untuk melihat pratinjau hasil String.replace, dengan dukungan penuh untuk backreference bernomor $1/$2, grup bernama $, dan $& untuk seluruh kecocokan.

Keenam flag JavaScript

Aktifkan global, case-insensitive, multiline, dotall, unicode, dan sticky sebagai chip — flag yang sama dengan RegExp native, tanpa kejutan saat memindahkan pola Anda ke kode.

Preset pola umum

Preset sekali klik untuk email, URL, IPv4, telepon, tanggal, warna hex, dan UUID — masing-masing dengan contoh teks uji sehingga Anda bisa melihat persis apa yang dicocokkan.

Cheatsheet bawaan

Grid referensi cepat untuk kelas karakter, kuantifier, anchor, grup, dan lookaround — dapat dilipat sehingga ada saat Anda butuh, tersembunyi saat tidak.

Privasi sejak rancangan

Pola, teks uji, dan pengganti semuanya tetap di peramban Anda. Dapat diverifikasi di DevTools → Network: nol permintaan dikirim saat Anda mengetik. Aman untuk log produksi dan data pelanggan.

Cara kerja pencocokan regex sebenarnya

Ekspresi reguler terlihat seperti coretan acak tetapi mesin di baliknya cukup sederhana.

  1. 1

    Kompilasi pola

    Saat Anda menulis /foo/ di JavaScript atau memanggil new RegExp('foo'), mesin mem-parsing pola Anda menjadi automaton internal — sebuah state machine yang tahu cara berjalan melalui teks input. Kompilasi dilakukan sekali; pencocokan berjalan cepat.

  2. 2

    Berjalan melalui string input

    Mesin menggerakkan kursor melalui teks uji Anda. Pada setiap posisi, ia mencoba mengikuti jalur automaton. Karakter yang memenuhi keadaan saat ini memajukan kedua kursor; ketidakcocokan akan ber-backtrack ke titik keputusan sebelumnya dan mencoba cabang lain.

  3. 3

    Capture group

    Tanda kurung dalam pola membuka capture group: ketika mesin berhasil mencocokkan di dalamnya, ia mengingat apa yang dicocokkan, terindeks sebagai $1, $2, dst. Grup bernama (?<n>...) menyimpannya di bawah sebuah nama. Capture ini muncul di field groups pada objek match.

  4. 4

    Ganti dengan backreference

    String.replace(regex, replacement) berjalan melalui kecocokan yang sama tetapi alih-alih mengembalikannya, ia menyisipkan string pengganti. $1 dalam pengganti adalah nilai literal yang ditangkap oleh grup 1 — sehingga Anda dapat memformat ulang 2024-01-15 menjadi 15/01/2024 dengan satu regex.

Tugas regex umum

Situasi nyata di mana Anda akan menggunakan penguji regex.

Memvalidasi format email atau URL

Bangun pola di penguji, tempelkan contoh input (yang nyata dan kasus tepi), dan lihat persis apa yang cocok sebelum Anda menerapkannya ke validasi formulir. Preset memberi Anda titik awal yang masuk akal yang menangani 95% input dunia nyata.

Membersihkan data log

Punya file log dengan timestamp campuran, kode warna ANSI, dan alamat IP yang ingin Anda redaksi? Gunakan mode Ganti dengan pola seperti \b(?:\d{1,3}\.){3}\d{1,3}\b dan pengganti [REDACTED] — pratinjau hasil sebelum menjalankannya melalui sed di file aslinya.

Refactoring kode dengan find-and-replace regex

Find-and-replace di IDE Anda mendukung regex tetapi tidak menampilkan pratinjau langsung di banyak kasus uji. Bangun polanya di sini terlebih dahulu dengan contoh baris dari basis kode Anda, verifikasi capture dan pengganti, lalu tempelkan regex yang berfungsi ke VS Code / IntelliJ.

Mengekstrak data terstruktur

Perlu menarik setiap alamat email dari dump kontak, atau setiap jumlah dolar dari struk? Bangun regex pencocokan di iKit, salin ke skrip satu baris (text.matchAll(re)), dan Anda telah mengubah tugas parsing dadakan menjadi sepuluh baris kode.

Mengapa pengujian regex lokal itu penting

Pola regex sering kali mengkodekan informasi sensitif: struktur ID pelanggan, endpoint API internal, aturan kata sandi, atau field PII yang Anda coba redaksi. Menempelkannya ke alat sisi server — dan menempelkan data uji nyata di sampingnya — membocorkan pola dan input. Penguji regex iKit adalah JavaScript yang sudah dimuat di tab peramban Anda.

  • Nol permintaan jaringan selama pencocokan atau penggantian — dapat diverifikasi di DevTools.
  • Pola dan teks uji tetap di memori peramban; dibersihkan saat Bersihkan atau muat ulang halaman.
  • Aman untuk pola redaksi log produksi, validasi data pelanggan, dan regex sensitif keamanan.

Panduan terkait

Tutorial mendalam dan perbandingan alat dari blog iKit.

Pertanyaan yang Sering Diajukan

Varian regex apa yang didukung?

Regex JavaScript / ECMAScript (mesin yang sama dengan yang digunakan peramban Anda untuk RegExp native). Ini adalah superset ketat dari POSIX dan banyak tumpang tindih dengan Python re, Java Pattern, dan PCRE untuk fitur umum. Perbedaan yang perlu diperhatikan: JavaScript mendukung lookahead/lookbehind, grup bernama (melalui /(?...)/), dan flag /u dan /y. JavaScript TIDAK mendukung kuantifier posesif (a++, a*+), atomic group ((?>...)), atau branch-reset group — itu khusus PCRE.

Apakah pola atau teks uji saya diunggah ke mana pun?

Tidak. Seluruh alat ini adalah JavaScript di dalam halaman ini. Kompilasi pola, pencocokan, dan penggantian semuanya berjalan di peramban Anda melalui konstruktor RegExp native. Buka DevTools → Network dan amati — nol permintaan dikirim saat Anda mengetik. Aman untuk menempelkan regex yang cocok dengan log produksi, email pelanggan, atau apa pun yang tidak ingin Anda log oleh alat server.

Apa perbedaan antara $1 dan $<name> saat ganti?

Keduanya adalah backreference dalam string pengganti. $1, $2, … merujuk ke capture group bernomor dalam urutan kemunculannya di pola — (foo)(bar) menghasilkan $1 = 'foo', $2 = 'bar'. $ merujuk ke capture group bernama yang dideklarasikan sebagai (?...) — lebih mudah dibaca dan tetap berlaku saat urutan grup di pola berubah. JavaScript juga memiliki $& (seluruh kecocokan), $` (teks sebelum kecocokan), dan $' (teks setelah kecocokan).

Mengapa lookbehind saya tidak berfungsi?

Lookbehind (?<=...) dan (?

Bagaimana cara mencocokkan emoji, karakter beraksen, atau aksara non-Latin?

Aktifkan flag /u (unicode), lalu gunakan Unicode property escapes di dalam pattern Anda. `\p{L}` mencocokkan huruf apa pun — termasuk ñ, é, 中, ก, ا. `\p{N}` mencocokkan angka apa pun, termasuk angka non-Latin seperti ٠-٩. `\p{Emoji}` mencocokkan code points emoji. Tanpa /u, pattern yang sama gagal diam-diam pada emoji surrogate pair (apa pun di luar BMP) dan memperlakukan karakter beraksen sebagai base + combining marks terpisah. Flag /u memberitahu engine untuk menafsirkan input Anda sebagai Unicode code points, bukan UTF-16 code units mentah — sehingga sebagian besar bug regex lintas-bahasa hilang dengan satu sakelar.