Apa itu Regex? — Regex

Apa itu Regular Expression? Regular Expression (disingkat regex atau regexp) adalah pola teks yang digunakan untuk mencocokkan, mencari, dan memanipulasi…

Regex, singkatan dari regular expression, adalah pola yang menggambarkan ciri-ciri teks yang kamu cari. Ctrl+F cuma bisa mencari satu tulisan yang persis sama. Regex bisa mencari semua teks yang cocok dengan ciri-cirinya, misalnya "semua nomor HP", walau tiap nomornya beda. Bayangin Bu Ratna, admin PO kue Lebaran, minta adiknya mencatat semua nomor HP di grup WhatsApp. Dia gak menyebut nomornya satu per satu, karena dia sendiri belum tahu. Dia menyebut cirinya: "yang diawali 08 atau +62, lalu angka-angka". Ciri-ciri itulah regex.

Sepanjang track ini kita pakai satu teks yang sama, chat PO Dapur Ratna: grup WhatsApp tempat Bu Ratna menerima pesanan kue. Isinya berantakan seperti chat sungguhan: nama, nomor HP dengan tiga gaya tulis, harga Rp85.000 dan 90rb, tanggal, dan kode order. Tiap pelajaran mengambil lebih banyak isi dari chat ini.

[12/03/26 08.15] Ratna (Admin): Open PO kue Lebaran! *Nastar* Rp85.000/toples, *Kastengel* 90rb, *Putri Salju* 75k. Kode PO-0412
[12/03/26 08.17] Dina: kak, nastarnya 2 toples ya. WA aku 0812-3456-7890
[12/03/26 08.20] Bayu: Saya kastengel 1, putri salju 1. Total brp? hp +62 857-1122-3344
[12/03/26 08.22] Ratna (Admin): @Bayu total Rp165.000 ya kak, transfer ke BCA 1234567890 a.n. Ratna
[12/03/26 08.25] Sari: NASTAR 3 toples = 255rb kan? no saya 081298765432, kirim tgl 25/03
[12/03/26 08.31] Dina: sudah transfer Rp170.000, bukti ke [email protected]. Kode PO-0413

🧪 Tebakan cepat: di chat itu ada tulisan Nastar, nastarnya, dan NASTAR. chat.match(/nastar/g) menemukan berapa: 1, 2, atau 3? Tebak dulu, jawabannya ada di bagian "Flag g dan i".

Regex pertamamu di JavaScript

Di JavaScript, chat di atas kita simpan di variabel chat, lalu kita tanya dua hal: ada atau gak, dan apa yang cocok.

const chat = `[12/03/26 08.15] Ratna (Admin): ...`; // 6 baris chat di atas

console.log(/PO-0413/.test(chat)); // true
console.log(/PO-0414/.test(chat)); // false
console.log(chat.match(/nastar/)); // ['nastar'], index: 157

Yang pertama ketemu adalah nastar di index 157, potongan dari kata nastarnya. Regex mencari potongan teks, bukan kata utuh. Cara membatasi ke kata utuh ada di pelajaran Anchors.

Cara mesin regex mencari

Mesin regex mulai di karakter pertama teks dan mencocokkan pola huruf demi huruf. Begitu ada yang beda, dia geser satu karakter ke kanan dan mencoba lagi. Posisi pertama yang cocok penuh, itu hasilnya. Contoh kecil: pola as di teks Nastar.

Mulai di index Yang dibandingkan Hasil
0 N dengan a beda, geser
1 a dengan a, lalu s dengan s cocok: as di index 1

Flag g dan i

Flag adalah huruf setelah garis miring penutup. Dia mengubah cara mencari, bukan polanya.

console.log(chat.match(/nastar/g));  // ['nastar']
console.log(chat.match(/nastar/gi)); // ['Nastar', 'nastar', 'NASTAR']
console.log(chat.match(/nastar/i));  // ['Nastar'], index: 54

Regex membedakan huruf besar dan kecil. Jadi /nastar/g cuma menemukan 1, yaitu yang di nastarnya. Nastar dan NASTAR baru ikut setelah ditambah i. Itu jawaban tebakannya.

Kapan pakai regex, kapan gak

Regex paling sering dipakai buat validasi format: memeriksa isian email, nomor HP, atau kode pos sesuai pola yang diharapkan. Selain itu:

Kalau yang dicari tulisan tetap, regex gak perlu. chat.includes("PO-0413") juga menjawab true, dan lebih gampang dibaca. Buat membaca HTML atau JSON, pakai alat khususnya (JSON.parse, DOMParser), karena isinya bertingkat dan regex gampang salah di situ.

⚠️ Jebakan yang sering ketemu

TL;DR: Regex (regular expression) adalah pola yang menggambarkan ciri-ciri teks. Di JavaScript ditulis /pola/flag. Huruf dan angka biasa cocok dengan dirinya sendiri, dan yang dicari potongan teks, bukan kata. pola.test(teks) menjawab true atau false; teks.match(pola) mengembalikan yang cocok, atau null kalau gak ada. Flag g mencari semua, flag i mengabaikan huruf besar-kecil. Pemakaian paling umum: validasi format seperti email dan nomor HP. Buat tulisan tetap, includes() sudah cukup.

Yang akan kamu pelajari