Regular Expression adalah tool powerful untuk mencari, memvalidasi, dan memanipulasi string. Menguasai RegExp sangat penting untuk form validation, parsing data, dan text processing.
Contents
1. Membuat Pattern
Ada dua cara membuat RegExp di JavaScript:
// 1. Literal
const pattern1 = /hello/;
// 2. Constructor
const pattern2 = new RegExp("hello");
/pattern/flags→ literal syntax lebih singkat.new RegExp()→ berguna saat pattern bersifat dinamis.
Contoh:
const namePattern = /^[A-Z][a-z]+$/;
console.log(namePattern.test("Alice")); // true
console.log(namePattern.test("alice")); // false
2. Flag RegExp
| Flag | Fungsi |
|---|---|
| g | global → cari semua match |
| i | case-insensitive |
| m | multi-line |
| s | dotall → . mencocokkan newline |
| u | unicode |
| y | sticky → cocok mulai posisi lastIndex |
Contoh:
const text = "Hello hello HELLO";
console.log(text.match(/hello/gi)); // ["Hello","hello","HELLO"]
3. test() & exec()
3.1 test()
- Mengembalikan true/false jika string cocok dengan pattern.
const pattern = /abc/;
console.log(pattern.test("abcdef")); // true
console.log(pattern.test("xyz")); // false
3.2 exec()
- Mengembalikan array hasil match atau null.
const pattern = /(\d+)-(\w+)/;
const result = pattern.exec("123-abc");
console.log(result[0]); // "123-abc" → full match
console.log(result[1]); // "123" → group 1
console.log(result[2]); // "abc" → group 2
- Gunakan loop untuk global match (
gflag).
const pattern = /\d+/g;
const str = "1 2 3 4";
let match;
while((match = pattern.exec(str)) !== null){
console.log(match[0]);
}
// Output: 1 2 3 4
4. match() & replace()
4.1 match()
const text = "JavaScript 2025";
console.log(text.match(/\d+/)); // ["2025"]
console.log(text.match(/\d+/g)); // ["2025"]
4.2 replace()
const text = "foo bar foo";
const newText = text.replace(/foo/g, "baz");
console.log(newText); // "baz bar baz"
Tips:
- Gunakan
guntuk mengganti semua match, jika tidak → hanya match pertama.
5. Validasi Email, Username, Angka
5.1 Email
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i;
console.log(emailPattern.test("user@example.com")); // true
console.log(emailPattern.test("user@.com")); // false
5.2 Username (alphanumeric, 3–16 karakter)
const usernamePattern = /^[a-zA-Z0-9]{3,16}$/;
console.log(usernamePattern.test("Alice123")); // true
console.log(usernamePattern.test("Al")); // false
5.3 Angka (integer positif)
const numberPattern = /^\d+$/;
console.log(numberPattern.test("12345")); // true
console.log(numberPattern.test("12a45")); // false
6. Praktik Terbaik RegExp
- Gunakan literal syntax jika pattern statis → lebih cepat.
- Gunakan constructor jika pattern dinamis.
- Tambahkan flags sesuai kebutuhan →
i,g,mumum dipakai. - Hindari regex yang terlalu kompleks → sulit dibaca → pertimbangkan kombinasi string methods.
- Simpan regex sebagai konstanta jika digunakan berulang → meningkatkan maintainability.
💡 Insight: RegExp adalah alat yang sangat kuat, tapi juga mudah salah digunakan. Memahami pattern, flags, dan method akan meningkatkan kemampuan manipulasi teks, validasi form, dan parsing data di JavaScript.