Penguji regex
Uji ekspresi reguler secara langsung: lihat kecocokan dan grup tangkapan, pratinjau penggantian, dan pisah teks — dengan semantik JavaScript.
Masukkan pola dan sedikit teks untuk melihat hasil
Apa yang dilakukan alat ini
Ekspresi reguler adalah bahasa ringkas untuk menjelaskan pola teks, dan satu-satunya cara andal untuk menulisnya adalah menyaksikannya berjalan terhadap teks nyata. Penguji ini melakukan itu secara langsung, dalam tiga mode. Cocok menampilkan setiap tempat pola cocok, disorot dalam teks Anda, dengan tiap grup tangkapan didaftar di bawah. Ganti mempratinjau apa yang akan dihasilkan String.replace, termasuk rujukan $1 dan lt;name>. Pisah menampilkan bagaimana String.split akan memotong-motong teks — termasuk bagian yang jarang diprediksi orang dengan benar, seperti pembatas tertangkap yang muncul di keluaran.
Pola berjalan pada mesin JavaScript peramban Anda sendiri, bukan tiruannya. Apa pun yang cocok di sini persis yang akan cocok di kode JavaScript Anda, bita demi bita, karena mesin yang sama itulah yang melakukan pekerjaannya.
Membaca hasil kecocokan
Setiap kecocokan disorot dalam teks uji, dan didaftar di bawahnya dengan posisinya — offset karakter tempat ia mulai dan berakhir. Jika pola mengandung grup tangkapan, tiap grup muncul di bawah kecocokannya dengan nilai yang ditangkapnya. Grup dinomori menurut kurung bukanya, dari kiri ke kanan, persis seperti mesin menomorinya untuk $1, $2, dan referensi-balik; grup bernama menampilkan namanya di samping nomornya. Grup yang tak berpartisipasi dalam kecocokan — katakanlah, sisi yang kalah dari alternasi — ditandai demikian ketimbang ditampilkan sebagai string kosong, karena bagi kode Anda keduanya adalah hal berbeda: undefined lawan "".
Pola bisa secara sah cocok dengan nol karakter — ^, \b, atau alternatif kosong semuanya bisa. Kecocokan panjang-nol itu tak menyorot apa pun, jadi alat ini menandai posisinya dengan garis tipis alih-alih membiarkan Anda bertanya-tanya ke mana kecocokannya pergi.
Flag-flag
Flag mengubah cara seluruh pola berperilaku, dan dua di antaranya menyebabkan sebagian besar kebingungan regex:
- g (global) — temukan setiap kecocokan, bukan hanya yang pertama. Tanpanya, cocok menampilkan satu hasil dan ganti mengubah satu kemunculan. Ini flag yang paling sering dilupakan orang.
- i (abaikan besar-kecil) — huruf cocok tanpa peduli besar-kecil.
- m (multibaris) — ^ dan $ cocok di awal dan akhir setiap baris, bukan hanya seluruh teks.
- s (dotAll) — titik cocok dengan karakter baris-baru pula. Tanpanya, . berhenti pada setiap pemutus baris.
- u (Unicode) — pola bekerja dalam titik kode, jadi emoji dan karakter lain di luar rentang dasar berperilaku benar, dan escape properti \p{…} menjadi tersedia.
- y (lengket) — kecocokan harus dimulai persis di tempat yang sebelumnya berakhir. Berguna untuk pemecah token; mengejutkan di tempat lain.
- d (indeks) — mesin merekam posisi persis tiap grup. Ia tak mengubah apa pun tentang yang cocok.
Rujukan penggantian
Teks penggantian tak diambil secara harfiah — segelintir urutan $ diperluas untuk tiap kecocokan. $1 sampai $9 menyisipkan yang ditangkap grup bernomor, lt;name> menyisipkan grup bernama, amp; menyisipkan seluruh kecocokan, dan $ menghasilkan tanda dolar harfiah. Yang lain disalin apa adanya.
"2026-07-20".replace(/(?<y>\d{4})-(\d{2})-(\d{2})/, "$3.$2.lt;y>")
// → "20.07.2026"Satu perilaku JavaScript yang layak dicamkan: tanpa flag g, replace hanya mengubah kemunculan pertama. Itu bukan keanehan alat ini — itu yang akan dilakukan kode Anda. Alat ini menampilkan petunjuk ketika g mati sehingga penggantian tunggal tak terbaca sebagai bug.
Bagaimana split sebenarnya berperilaku
String.split dengan regex punya dua perilaku yang kerap mengejutkan bahkan pengembang berpengalaman, dan mode pisah ada terutama untuk membuatnya terlihat. Pertama, jika pola mengandung grup tangkapan, apa pun yang ditangkapnya dianyam ke dalam larik keluaran di antara potongan — memisah "a,b" pada (,) menghasilkan tiga bagian: a, koma, b. Kedua, kecocokan di awal atau akhir teks, atau dua kecocokan bersebelahan, menghasilkan string kosong dalam keluaran, yang ditampilkan alat ini secara eksplisit ketimbang menyembunyikannya.
"a,b".split(/(,)/) // → ["a", ",", "b"] ",a,".split(/,/) // → ["", "a", ""]
Pola liar dihentikan, bukan ditahan
Beberapa pola adalah jebakan. Kuantor bersarang seperti (a+)+ yang dicoba terhadap string panjang yang nyaris cocok memaksa mesin mencoba ulang kombinasi yang jumlahnya tumbuh secara eksponensial sebelum menyerah — inilah yang disebut berundur secara katastrofik (catastrophic backtracking), dan ia bisa membekukan tab peramban selama beberapa menit. Alat ini menjalankan pola Anda dalam utas pekerja terpisah dan menghentikannya setelah dua detik, jadi pola liar hanya membuat Anda mendapat pesan alih-alih halaman beku. Jika Anda menemui pesan itu, cari kuantor bersarang atau alternatif tumpang-tindih dalam pola; perbaikannya biasanya membuat pengulangan yang di dalam dan yang di luar tak bisa cocok dengan teks yang sama.
Seperti setiap alat di situs ini, pola dan teks tak pernah meninggalkan perangkat Anda — pekerja itu bagian dari halaman, bukan server.
Pertanyaan yang sering diajukan
- Ragam regex mana yang dipakai penguji ini?
- JavaScript (ECMAScript), karena pola berjalan pada mesin peramban sendiri. Grup bernama, lookbehind, dan escape properti Unicode \p{…} semuanya bekerja seperti di JavaScript modern. Pola dari PCRE atau Python sebagian besar masih berlaku, tetapi konstruksi yang tak dimiliki JavaScript — kuantor posesif, grup atomik, \A dan \z — akan ditolak atau berarti sesuatu yang lain.
- Mengapa pola saya hanya menemukan satu kecocokan?
- Hampir selalu: flag g mati. Tanpanya, JavaScript berhenti pada kecocokan pertama, dan replace hanya mengubah kemunculan pertama. Nyalakan kotak centang g untuk mencari seluruh teks.
- Apa arti "tidak berpartisipasi" untuk grup?
- Grup itu ada dalam pola tetapi tak dipakai dalam kecocokan tertentu ini — biasanya karena ia duduk di cabang alternasi yang kalah, atau di bawah kuantor yang cocok nol kali. Dalam kode nilainya undefined, yang berbeda dari menangkap string kosong, jadi alat ini menjaga keduanya tetap berbeda.
- Apakah pola atau teks saya dikirim ke server?
- Tidak. Pencocokan berjalan sepenuhnya di peramban Anda, di dalam utas pekerja pada halaman yang sama. Batas waktu keamanan dua detik juga ditegakkan secara lokal — tidak ada yang Anda ketik meninggalkan perangkat Anda.
Alat terkait
- Diff teks
Bandingkan dua teks — setiap baris dan kata yang berubah.
- Inspektur karakter Unicode
Lihat persis dari karakter apa string terbuat.
- Pembuat slug URL
Ubah judul apa pun menjadi slug URL yang bersih.
- Konverter huruf besar-kecil
Konversi antara camelCase, snake_case, Title Case, dan lainnya.