Regex Cheat Sheet
Referensi lengkap semua syntax regex yang sudah kamu pelajari, siap dipakai sebagai rujukan cepat.
Karakter Dasar
| Pattern | Cocok Dengan |
|---|---|
. |
Karakter apapun (kecuali newline) |
\d |
Digit [0-9] |
\D |
Bukan digit [^0-9] |
\w |
Word char [a-zA-Z0-9_] |
\W |
Bukan word char |
\s |
Whitespace (spasi, tab, newline) |
\S |
Bukan whitespace |
\b |
Word boundary |
\B |
Bukan word boundary |
Quantifier
| Pattern | Arti | Lazy |
|---|---|---|
* |
0 atau lebih | *? |
+ |
1 atau lebih | +? |
? |
0 atau 1 | ?? |
{n} |
Tepat n kali | - |
{n,} |
Minimal n | {n,}? |
{n,m} |
n sampai m | {n,m}? |
Anchor
| Pattern | Posisi |
|---|---|
^ |
Awal string (atau baris dengan flag m) |
$ |
Akhir string (atau baris dengan flag m) |
\b |
Word boundary |
Groups & Lookaround
| Pattern | Arti |
|---|---|
(abc) |
Capturing group |
(?:abc) |
Non-capturing group |
(?<nama>abc) |
Named group |
\1 |
Backreference ke group 1 |
(?=abc) |
Positive lookahead |
(?!abc) |
Negative lookahead |
(?<=abc) |
Positive lookbehind |
(?<!abc) |
Negative lookbehind |
Flags
| Flag | Arti |
|---|---|
g |
Global — semua kecocokan |
i |
Case-insensitive |
m |
Multiline — ^/$ per baris |
s |
Dotall — . cocok dengan newline |
u |
Unicode |
y |
Sticky — mulai dari lastIndex |
Method JavaScript
| Method | Return | Kegunaan |
|---|---|---|
regex.test(str) |
Boolean | Cek ada/tidak |
regex.exec(str) |
Array/null | Detail satu kecocokan |
str.match(regex) |
Array/null | Cari kecocokan |
str.matchAll(regex) |
Iterator | Semua kecocokan + detail |
str.replace(regex, rep) |
String | Ganti kecocokan |
str.replaceAll(regex, rep) |
String | Ganti semua |
str.search(regex) |
Number | Posisi pertama (-1 jika tidak ada) |
str.split(regex) |
Array | Pecah string |
Pattern Umum yang Sering Dipakai
// Email (sederhana)
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
// URL
/^https?:\/\/[\w.-]+\.[a-zA-Z]{2,}/
// Nomor HP Indonesia
/^(\+62|0)8\d{1,2}[- ]?\d{4}[- ]?\d{2,4}$/
// IP Address (sederhana)
/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
// Hex Color
/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/
// Password kuat (8+ char, huruf besar, angka, simbol)
/^(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*]).{8,}$/
// Hapus whitespace berlebih
str.replace(/\s+/g, " ").trim()
// camelCase → kebab-case
str.replace(/[A-Z]/g, m => "-" + m.toLowerCase())
// Extract angka dari string
str.match(/\d+/g)
// Validasi hanya huruf dan spasi
/^[a-zA-Z\s]+$/
// Format ribuan (1234567 → 1.234.567)
str.replace(/\B(?=(\d{3})+(?!\d))/g, ".")
Tips Menulis Regex
- Mulai sederhana — buat pattern basic dulu, lalu tambahkan kompleksitas
- Test dengan berbagai input — termasuk edge case seperti string kosong
- Gunakan tool online — regex101.com untuk visualisasi dan debugging
- Jangan over-engineer — regex sederhana yang benar lebih baik dari regex kompleks yang rapuh
- Dokumentasikan — tambahkan komentar untuk regex yang kompleks
- Hati-hati backtracking — hindari pattern seperti
(a+)+yang bisa sangat lambat
// Contoh regex yang didokumentasikan dengan baik:
const dateRegex = new RegExp(
"^" +
"(\\d{4})" + // Tahun (4 digit)
"-" +
"(\\d{2})" + // Bulan (2 digit)
"-" +
"(\\d{2})" + // Hari (2 digit)
"quot;
);
🎭 Analogi sehari-hari: Cheat sheet = peta wilayah saat eksplorasi. Bukan untuk hafal, tapi untuk referensi cepat saat butuh. Pelajaran-pelajaran sebelum ini = pengalaman lapangan. Cheat sheet ini = peta yang bisa dibuka kalau lupa "huruf wilayah mana yang aku cari?".
💡 Yang paling sering dipake (80% kasus):
\d,\w,\s— character class shorthand*,+,?,{n,m}— quantifier^,$— anchor()— group + capture[...]— character seti,g,m— flag
Sisa fitur (lookbehind, named group, backref) untuk advanced cases.
⚠️ Tips menjaga regex maintainable:
- Komentar untuk regex > 30 karakter — di JS pakai concatenation atau
RegExpconstructor + comment - Verbose flag (
/x) di PHP/Python — boleh whitespace + komentar di pattern - Test sebelum commit — input edge case, regex lulus = aman
- Pakai library kalau bisa — email validator, URL parser, dll
- Code review regex — minta orang lain baca, kalau gak paham = simplify
🎯 Workflow regex production:
- Define requirements — apa yang dimatch, apa yang ditolak
- Iterate di regex101.com — flavor sesuai target language
- Test positive + negative cases — jangan cuma yang harus match
- Bench performance dengan input panjang — cek ReDoS
- Add to test suite — jangan tunggu prod yang temukan bug
- Document — kasih comment WHY, bukan WHAT
🧪 Tebakan cepat: Kapan pakai regex vs string method?
str.includes("foo")= simple contains, pakai ini (lebih cepat)/foo|bar|baz/= alternation = regexstr.startsWith("http")= simple prefix/^https?:/= pattern prefix = regexstr.split(",")= simple separator/[,;|]/= multiple separator = regex
Aturan: String method untuk simple, regex untuk pattern.
TL;DR: Cheat sheet = referensi cepat semua syntax regex yang dipelajari. Komponen utama (80%): \d \w \s, *+?{}, ^$, (), [], flags igm. Lookbehind, backref = advanced. Selalu test positive + negative cases. Pakai string method untuk simple ops, regex untuk pattern.