Hari 18: Regular Expression di JavaScript
60 min
Last updated 09 Apr 2026
Regular Expression Dasar
// Membuat RegExp
const pola1 = /hello/; // literal
const pola2 = new RegExp("hello"); // constructor
// Flags
/teks/i // case insensitive
/teks/g // global (semua kecocokan)
/teks/m // multiline
/teks/gi // kombinasi
Method Regex
const email = "budi@example.com";
const polEmail = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
// test() — boolean
polEmail.test(email); // true
// match() — ambil kecocokan
"2024-01-15".match(/\d{4}-\d{2}-\d{2}/);
// ["2024-01-15"]
// matchAll() — semua kecocokan dengan groups
const teks = "Harga: Rp100.000, Diskon: Rp25.000";
const harga = [...teks.matchAll(/Rp([\d.]+)/g)];
harga.forEach(m => console.log(m[1])); // "100.000", "25.000"
// replace() & replaceAll()
"halo dunia".replace(/[aeiou]/gi, "*"); // "h*l* d*n**"
// split()
"a,b;c d".split(/[,; ]/); // ["a","b","c","d"]
Named Groups
const tgl = "2024-05-15";
const { year, month, day } = tgl.match(/(?\d{4})-(?\d{2})-(?\d{2})/).groups;
console.log(year, month, day); // 2024 05 15
💡
Notice: ?.[0] adalah optional chaining dengan bracket notation. match() return null jika tidak ada kecocokan.
Assignment
Validasi dan ekstrak data dari teks: "Telp: 0812-3456-7890, Email: budi@gmail.com". Gunakan regex untuk (1) cek apakah nomor telp valid (08xx-xxxx-xxxx), (2) ekstrak email.
Expected output:
Telp valid: Ya
Telp: 0812-3456-7890
Email: budi@gmail.com
JS
script.js
Solution
Output