← Semua alat

Tester Regex

Buat, uji, dan debug ekspresi reguler secara langsung terhadap teks Anda sendiri di browser. Pelajari kelas karakter, kuantifier, jangkar, grup, dan flag.

Regex Tester: bangun dan debug pola terhadap teks Anda sendiri

Ekspresi reguler adalah bahasa kecil untuk mendeskripsikan bentuk teks. Alih-alih bertanya "apakah kata ini ada di sini?", regex memungkinkan Anda bertanya "apakah ada string yang terlihat seperti ini?" Itulah yang membuatnya kuat untuk menemukan, memvalidasi, mengekstrak, dan mengganti teks dalam editor kode, file log, input formulir, dan skrip. Dan itulah juga yang membuatnya mudah salah, karena pola yang terbaca baik di kepala Anda bisa diam-diam mencocokkan terlalu banyak, terlalu sedikit, atau tidak sama sekali.

Inilah mengapa pengujian secara interaktif lebih baik daripada menebak. Ketika Anda mengetik pola dan melihat kecocokan menyala di seluruh teks sampel nyata, Anda mendapatkan umpan balik instan: Anda melihat apa yang tertangkap, apa yang lolos, dan grup tangkapan mana yang mengambil bagian mana. Regex Tester kami berjalan sepenuhnya di browser Anda. Pola dan teks sampel Anda tidak pernah meninggalkan halaman, sehingga Anda dapat menempelkan baris log, email, atau data produksi tanpa mengirim apa pun ke server.

Filter cyan bercahaya yang menangkap token emas tertentu dari aliran data pada latar belakang indigo gelap
Regex bertindak seperti filter, hanya memilih token yang cocok dengan pola Anda.

Blok bangunan yang perlu diketahui

Sebagian besar pola sehari-hari dirakit dari sekumpulan kecil bagian. Pelajari ini dan Anda dapat membaca sebagian besar regex yang Anda temui di dunia nyata.

Kelas karakter mendeskripsikan sekumpulan karakter yang diizinkan. [aeiou] cocok dengan vokal tunggal apa pun, [0-9] cocok dengan satu digit, dan [a-zA-Z] cocok dengan satu huruf. Tanda sisipan di dalam tanda kurung membalikkan set, jadi [^0-9] berarti "karakter apa pun yang bukan digit." Singkatan menghemat pengetikan: \d adalah digit, \w adalah karakter kata (huruf, digit, garis bawah), \s adalah spasi putih, dan titik . cocok dengan hampir semua karakter tunggal.

Quantifier mengatakan berapa kali bagian sebelumnya dapat berulang. * berarti nol atau lebih, + berarti satu atau lebih, dan ? berarti nol atau satu (opsional). Untuk jumlah yang tepat, {3} berarti tepat tiga dan {2,4} berarti dua hingga empat. Jadi \d{4} cocok dengan tahun empat digit dan colou?r cocok dengan kedua ejaan.

Anchor mengikat pola ke posisi daripada karakter. ^ cocok dengan awal teks, $ cocok dengan akhir, dan \b menandai batas kata. Pola ^Error hanya cocok dengan baris yang diawali "Error", yang tepat adalah yang Anda inginkan saat memindai log.

Grup membungkus bagian pola dalam tanda kurung, baik untuk menerapkan quantifier ke beberapa karakter sekaligus maupun untuk menangkap teks yang cocok untuk digunakan kembali. Dalam (\d{4})-(\d{2})-(\d{2}) setiap grup menangkap komponen tanggal yang dapat Anda ambil nanti. Alternasi dengan pipe bertindak seperti "atau": cat|dog|fish cocok dengan salah satu dari tiga kata.

Pola yang benar-benar akan Anda gunakan

Beberapa pekerjaan yang berulang mencakup sebagian besar pekerjaan nyata. Untuk menangkap sesuatu yang mirip email, [\w.+-]+@[\w-]+\.[\w.-]+ adalah titik awal yang pragmatis; validasi email penuh sesuai spesifikasi formal terkenal rumit, dan pola yang longgar biasanya merupakan pilihan yang tepat untuk menyoroti kandidat daripada menolak pengguna.

Untuk angka, \d+ menangkap rangkaian digit, sementara -?\d+(\.\d+)? cocok dengan negatif opsional dan desimal. Untuk memangkas spasi di awal dan akhir, cocokkan ^\s+|\s+$ dan ganti dengan kosong. Untuk menemukan kata yang terduplikasi, pola backreference \b(\w+)\s+\1\b cocok dengan sebuah kata yang diikuti oleh dirinya sendiri, di mana \1 merujuk kembali ke grup tangkapan pertama.

Kata-kata terpilih yang bersinar emas dan disorot dalam aliran partikel teks cyan yang mengalir pada navy gelap
Sorotan langsung menunjukkan dengan tepat rentang teks mana yang cocok dengan pola.

Flag mengubah cara pencocokan bekerja

Flag adalah sakelar yang memodifikasi seluruh pola. Flag global (g) menemukan setiap kecocokan alih-alih berhenti di yang pertama, yang ingin Anda gunakan saat menyoroti semua kemunculan. Flag case-insensitive (i) membuat error cocok dengan "Error" dan "ERROR" sekaligus. Flag multiline (m) mengubah ^ dan $ agar cocok di awal dan akhir setiap baris, bukan hanya seluruh teks, yang sangat penting untuk pekerjaan log baris per baris. Flag berguna lainnya termasuk s (dotall, membuat titik cocok dengan baris baru) dan u untuk penanganan Unicode penuh.

Varian berbeda sedikit per bahasa

Regex adalah keluarga dialek, bukan satu standar tetap. JavaScript, Python, PCRE (PHP), Java, .NET, Go, dan Rust sepakat pada sintaks inti di atas, tetapi berbeda di tepinya: dukungan lookbehind, sintaks named-group ((?<name>...) versus (?P<name>...)), escape properti Unicode, dan flag mana yang ada semuanya bervariasi. Pola yang bekerja di satu engine mungkin membutuhkan sedikit penyesuaian di engine lain, jadi ada baiknya menguji terhadap varian yang benar-benar Anda gunakan. Ketika Anda sudah menyempurnakan pola, alat developer dan alat teks kami yang lain dapat membantu pekerjaan sekeliling berupa pembersihan, pengodean, dan transformasi data yang baru saja Anda cocokkan.

Pertanyaan yang sering diajukan

Apakah teks saya dikirim ke server?

Tidak. Regex Tester berjalan sepenuhnya di browser Anda. Pola dan teks sampel Anda tetap di perangkat Anda dan tidak pernah diunggah, sehingga aman untuk menempelkan data sensitif.

Varian regex mana yang digunakan alat ini?

Alat ini menggunakan engine regex JavaScript yang ada di browser Anda. Sintaks intinya cocok dengan yang Anda ketahui dari sebagian besar bahasa, meskipun beberapa fitur lanjutan sedikit berbeda dari PCRE, Python, atau .NET.

Apa perbedaan antara pencocokan greedy dan lazy?

Secara default quantifier bersifat greedy dan mengambil teks sebanyak mungkin. Menambahkan tanda tanya menjadikannya lazy, sehingga mengambil sesedikit mungkin. Misalnya, pola titik bintang bersifat greedy sementara titik bintang tanda tanya bersifat lazy.

Bagaimana cara mencocokkan karakter khusus secara harfiah?

Escape dengan backslash. Untuk mencocokkan titik yang sebenarnya, tulis backslash titik. Hal yang sama berlaku untuk meta-karakter lain seperti tanda kurung, tanda kurung siku, tanda plus, dan tanda tanya.

Mengapa pola saya tidak mencocokkan apa pun?

Penyebab umum adalah flag global yang hilang, anchor yang mengikat kecocokan ke posisi yang salah, karakter khusus yang tidak di-escape, atau quantifier greedy yang melampaui batas yang Anda harapkan. Uji bagian per bagian untuk menemukan penyebabnya.

Bisakah saya menangkap bagian dari kecocokan?

Ya. Bungkus bagian dari pola dalam tanda kurung untuk membuat grup tangkapan. Setiap grup dilaporkan secara terpisah, yang memungkinkan Anda mengekstrak field seperti tahun, bulan, dan hari dari sebuah tanggal.