Penguji regex
Uji ekspresi reguler secara langsung: lihat kecocokan dan grup tangkapan, pratinjau penggantian, dan pisah teks — dengan semantik JavaScript.
Masukkan sebuah pola dan sedikit teks untuk melihat hasil
Apa yang dilakukan alat ini
Sebuah 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 teks terpisah — termasuk bagian yang jarang diprediksi orang dengan benar, seperti pembatas tertangkap yang muncul di keluaran.
Pola berjalan pada mesin JavaScript browser 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 yang melakukan pekerjaannya.
Membaca hasil kecocokan
Setiap kecocokan disorot dalam teks uji, dan didaftar di bawahnya dengan posisinya — offset karakter tempat ia dimulai dan diakhiri. 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; sebuah grup bernama menampilkan namanya di samping nomornya. Sebuah grup yang tak ambil bagian dalam kecocokan — katakanlah, sisi yang kalah dari sebuah alternasi — ditandai demikian ketimbang ditampilkan sebagai string kosong, karena bagi kode Anda keduanya adalah hal berbeda: undefined lawan "".
Sebuah pola bisa dengan sah mencocokkan nol karakter — ^, \b, atau sebuah alternatif kosong semuanya bisa. Kecocokan panjang-nol itu tak menyorot apa pun, jadi alat ini menandai posisinya dengan sebuah garis tipis alih-alih membiarkan Anda bertanya-tanya ke mana kecocokannya pergi.
Flag-flag
Flag mengubah bagaimana 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 pemenggal 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 sebuah grup bernama, amp; menyisipkan seluruh kecocokan, dan $ menghasilkan sebuah 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 diinternalisasi: tanpa flag g, replace hanya mengubah kemunculan pertama. Itu bukan keanehan alat ini — itu yang akan dilakukan kode Anda. Alat ini menampilkan sebuah petunjuk ketika g mati sehingga penggantian tunggal tak terbaca sebagai bug.
Bagaimana split sebenarnya berperilaku
String.split dengan sebuah regex punya dua perilaku yang rutin mengejutkan bahkan pengembang berpengalaman, dan mode pisah ada sebagian besar 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. Sebuah kuantor bersarang seperti (a+)+ yang dicoba terhadap string panjang yang nyaris cocok memaksa mesin mencoba ulang kombinasi sebanyak eksponensial sebelum menyerah — ini disebut backtracking katastrofik, dan ia bisa membekukan sebuah tab browser selama beberapa menit. Alat ini menjalankan pola Anda dalam sebuah utas pekerja terpisah dan menghentikannya setelah dua detik, jadi sebuah pola liar menelan Anda sebuah pesan alih-alih halaman beku. Jika Anda menemui pesan itu, cari kuantor bersarang atau alternatif tumpang-tindih dalam pola; perbaikannya biasanya membuat pengulangan dalam dan yang luar tak bisa mencocokkan teks yang sama.
Seperti setiap alat di situs ini, pola dan teks tak pernah meninggalkan perangkat Anda — pekerja itu bagian dari halaman, bukan sebuah server.
Pertanyaan yang sering diajukan
- Cita rasa regex mana yang dipakai penguji ini?
- JavaScript (ECMAScript), karena pola berjalan pada mesin browser sendiri. Grup bernama, lookbehind, dan escape properti Unicode \p{…} semuanya bekerja seperti di JavaScript modern. Pola dari PCRE atau Python kebanyakan terbawa, 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 sebuah grup?
- Grup itu ada dalam pola tetapi tak dipakai dalam kecocokan tertentu ini — biasanya karena ia duduk di cabang sebuah alternasi yang kalah, atau di bawah sebuah kuantor yang cocok nol kali. Dalam kode nilainya undefined, yang berbeda dari menangkap sebuah string kosong, jadi alat ini menjaga keduanya tetap berbeda.
- Apakah pola atau teks saya dikirim ke server?
- Tidak. Pencocokan berjalan sepenuhnya di browser Anda, di dalam sebuah utas pekerja pada halaman yang sama. Batas waktu keamanan dua detik juga ditegakkan secara lokal — tidak ada yang Anda ketik meninggalkan perangkat Anda.