Regex Tester
Tes regular expression secara real-time. Lihat match yang di-highlight, capture groups, dan gunakan pattern umum.
Apa itu Regular Expression (Regex)?
Regular Expression, atau yang biasa disingkat Regex atau Regexp, adalah urutan karakter yang membentuk pola pencarian teks. Regex digunakan untuk mencocokkan, mencari, dan memanipulasi string berdasarkan pola tertentu. Konsep ini pertama kali diperkenalkan oleh matematikawan Stephen Kleene pada tahun 1950-an sebagai bagian dari teori bahasa formal, dan kemudian diadopsi ke dalam dunia pemrograman oleh Ken Thompson yang mengimplementasikannya di editor teks Unix.
Regex tester online kami memungkinkan Anda menulis dan menguji regular expression secara real-time. Setiap perubahan pada pattern atau test string langsung menampilkan hasil match yang di-highlight, jumlah kecocokan, dan capture groups. Tool ini sangat berguna untuk mengembangkan dan men-debug regex sebelum mengimplementasikannya dalam kode program Anda.
Sintaks Dasar Regex
Regex memiliki sintaks khusus yang menggunakan karakter biasa dan karakter meta (metacharacter) untuk membangun pola. Berikut adalah elemen-elemen dasar sintaks regex yang perlu Anda ketahui:
- Karakter Literal β Huruf, angka, dan karakter biasa lainnya mencocokkan diri mereka sendiri. Misalnya, regex "cat" akan mencocokkan substring "cat" dalam teks.
- Metacharacter β Karakter khusus yang memiliki fungsi tertentu: titik (.) mencocokkan karakter apapun kecuali newline, caret (^) menandai awal string, dollar ($) menandai akhir string, dan backslash (\) digunakan untuk escape karakter khusus.
- Character Class β Tanda kurung siku [abc] mencocokkan salah satu karakter yang ada di dalamnya. Range bisa ditentukan dengan tanda hubung, seperti [a-z] untuk huruf kecil, [0-9] untuk angka, atau [A-Za-z0-9] untuk alfanumerik. Tanda caret di dalam kurung [^abc] mencocokkan karakter yang tidak ada dalam set.
- Shorthand Character Class β Singkatan untuk class umum: \d sama dengan [0-9], \w sama dengan [A-Za-z0-9_], \s untuk whitespace, dan versi kapital (\D, \W, \S) adalah negasi dari masing-masing.
Quantifier dalam Regex
Quantifier menentukan berapa kali elemen sebelumnya harus muncul untuk menghasilkan kecocokan. Quantifier dasar meliputi: asterisk (*) untuk nol atau lebih kemunculan, plus (+) untuk satu atau lebih, tanda tanya (?) untuk nol atau satu kemunculan, {n} untuk tepat n kemunculan, {n,} untuk n atau lebih, dan {n,m} untuk antara n sampai m kemunculan. Secara default quantifier bersifat greedy (mencocokkan sebanyak mungkin), tambahkan ? setelah quantifier untuk mode lazy yang mencocokkan sesedikit mungkin.
Grouping dan Capture Groups
Tanda kurung biasa () digunakan untuk mengelompokkan bagian dari pola regex. Selain pengelompokan, kurung juga membuat capture group yang menangkap substring yang cocok untuk digunakan kemudian, misalnya dalam operasi replace. Non-capturing group (?:...) melakukan pengelompokan tanpa menangkap. Backreference \1, \2, dll. merujuk ke capture group sebelumnya berdasarkan urutan.
Named capture groups menggunakan sintaks (?<nama>...) yang memungkinkan Anda merujuk ke group berdasarkan nama yang lebih deskriptif. Ini sangat berguna untuk regex yang kompleks dengan banyak capture groups, membuat kode lebih mudah dibaca dan dimaintain.
Lookahead dan Lookbehind
Lookahead dan lookbehind adalah assertions yang mencocokkan posisi dalam string berdasarkan apa yang ada di depan atau di belakang posisi tersebut, tanpa mengkonsumsi karakter. Positive lookahead (?=...) mencocokkan posisi yang diikuti oleh pola tertentu, sedangkan negative lookahead (?!...) mencocokkan posisi yang tidak diikuti oleh pola tersebut. Lookbehind bekerja serupa untuk karakter sebelumnya: positive (?<=...) dan negative (?<!...). Assertions ini sangat powerful untuk validasi kompleks dan pencocokan kontekstual.
Flag Regex
Flag mengubah perilaku pencocokan regex secara keseluruhan. Flag yang paling umum digunakan meliputi:
- g (global) β Mencari semua kecocokan dalam string, bukan hanya yang pertama. Tanpa flag ini, regex berhenti setelah menemukan kecocokan pertama.
- i (case-insensitive) β Mengabaikan perbedaan huruf besar dan kecil. Misalnya, /hello/i akan mencocokkan "Hello", "HELLO", dan "hElLo".
- m (multiline) β Mengubah perilaku ^ dan $ agar mencocokkan awal dan akhir setiap baris, bukan hanya awal dan akhir seluruh string.
- s (dotAll) β Membuat metacharacter . mencocokkan semua karakter termasuk newline (\n), yang secara default dikecualikan oleh titik.
Pattern Regex yang Sering Digunakan
Beberapa pola regex yang paling banyak digunakan dalam pengembangan software antara lain: validasi email menggunakan pattern yang mencocokkan format [email protected], validasi URL untuk memastikan format http atau https yang benar, validasi nomor telepon yang mengakomodasi berbagai format internasional, validasi alamat IP baik IPv4 maupun IPv6, dan parsing tanggal dalam berbagai format. Setiap pattern ini memiliki tingkat kompleksitas dan akurasi yang berbeda tergantung seberapa ketat validasi yang diperlukan.
Tips Menulis Regex yang Baik
Beberapa best practice saat bekerja dengan regex: pertama, mulai dari pola sederhana dan tambahkan kompleksitas secara bertahap. Kedua, gunakan regex tester untuk menguji dengan berbagai input termasuk edge cases. Ketiga, tambahkan komentar untuk regex yang kompleks agar mudah dipahami oleh developer lain. Keempat, hindari catastrophic backtracking dengan menghindari nested quantifiers pada pola yang overlapping. Kelima, pertimbangkan apakah string method biasa bisa menyelesaikan masalah tanpa perlu regex.
Pertanyaan yang Sering Diajukan
Apakah regex di JavaScript sama dengan bahasa lain?
Sebagian besar sintaks regex universal, namun ada perbedaan fitur di setiap bahasa. JavaScript mendukung sebagian besar fitur standar termasuk lookahead, lookbehind, dan named groups.
Mengapa regex saya lambat?
Biasanya karena catastrophic backtracking yang terjadi ketika regex engine harus mencoba terlalu banyak kombinasi. Hindari nested quantifiers seperti (a+)+ dan buat pattern se-spesifik mungkin.
Apakah tool ini mendukung semua fitur regex?
Tool ini menggunakan JavaScript regex engine yang mendukung fitur modern termasuk lookahead, lookbehind, named groups, dan flag dotAll.
Kesimpulan
Regular expression adalah skill fundamental bagi setiap programmer dan IT professional. Meskipun terlihat intimidating pada awalnya, pemahaman bertahap tentang sintaks dan konsep regex akan sangat meningkatkan produktivitas Anda dalam memproses dan memanipulasi teks. Gunakan regex tester kami untuk belajar, bereksperimen, dan men-debug pattern regex Anda secara real-time sebelum mengimplementasikannya dalam kode production.