Regular Expression (Regex) JavaScript Lengkap

Created at by Aris Munandar

Apakah kamu pernah ingin mencari pola tertentu di dalam teks, memvalidasi input form, atau memproses data string dengan cepat di JavaScript? Jika iya, Regular Expression atau yang sering disingkat Regex adalah alat yang tepat untuk kamu pelajari. Regex memungkinkan kamu menemukan, memeriksa, dan memanipulasi teks dengan cara yang jauh lebih efisien dibandingkan menggunakan logika string biasa.

Dalam artikel ini, kita akan membahas Regex JavaScript secara lengkap, mulai dari dasar-dasar, metode populer seperti test, match, replace, hingga penggunaan regex untuk validasi email, nomor telepon, password, dan berbagai kasus praktis lainnya. Panduan ini dibuat langkah demi langkah, cocok untuk pemula maupun pengembang web yang ingin memperdalam kemampuan pattern matching dan optimasi regex di proyek nyata.

Baca juga: Error Handling di JavaScript: Try, Catch, Finally

Pengenalan Regular Expression

Pengenalan Regular Expression (Regex) adalah langkah pertama untuk memahami bagaimana pola teks bekerja dalam JavaScript. Regex merupakan sebuah pola karakter yang digunakan untuk mencari, mencocokkan, dan memanipulasi string dengan cara yang efisien. Dibandingkan metode pencarian teks biasa, regex menawarkan fleksibilitas dan kekuatan yang jauh lebih besar—mulai dari pencarian sederhana hingga validasi input kompleks seperti email, nomor telepon, dan password.

Dalam JavaScript, regular expression sudah terintegrasi secara native, sehingga penggunaannya sangat mudah dan tidak memerlukan library tambahan. Materi pengenalan ini akan membahas apa itu regex, bagaimana sejarahnya digunakan dalam berbagai bahasa pemrograman, keunggulannya di JavaScript, hingga contoh studi kasus pencarian teks. Dengan memahami dasar pengenalan regex, kamu akan mampu menggunakan pattern matching dengan lebih percaya diri dan efisien saat membangun aplikasi web modern.

1. Apa itu Regular Expression

Regular Expression atau Regex adalah sebuah pola (pattern) yang digunakan untuk mencari, mencocokkan, dan memanipulasi teks. Dalam JavaScript, regex sangat berguna untuk memvalidasi input, menemukan karakter tertentu, memfilter data, hingga melakukan transformasi teks dengan cara yang jauh lebih efisien dibandingkan metode string biasa. Regex bekerja dengan cara mencocokkan pola tertentu pada string, seperti huruf, angka, simbol, atau kombinasi kompleks.

Dalam pengembangan web modern, regex menjadi salah satu alat penting karena mampu menghemat banyak waktu dan baris kode. Dengan satu pola regex, kamu dapat menyelesaikan tugas yang biasanya membutuhkan kondisi if bertingkat atau loop yang panjang.

2. Sejarah dan penggunaan regex di berbagai bahasa pemrograman

Regular Expression pertama kali diperkenalkan pada tahun 1950-an oleh ilmuwan bernama Stephen Cole Kleene, yang mengembangkan teori matematika tentang pola simbolik. Konsep ini kemudian diadopsi ke dunia pemrograman dan digunakan dalam berbagai utilitas sistem seperti grep, sed, dan awk.

Saat ini, regex digunakan secara luas di berbagai bahasa pemrograman populer seperti:

  • JavaScript
  • Python
  • PHP
  • Java
  • C#
  • Ruby
  • Perl (bahasa yang dikenal sangat kuat dalam regex)

Meskipun sintaks regex bersifat universal, beberapa bahasa memiliki fitur tambahan atau variasi kecil. Namun secara keseluruhan, dasar penggunaannya tetap sama: membantu developer mengolah teks secara cepat dan efisien.

3. Keunggulan menggunakan regex di JavaScript

JavaScript memiliki dukungan bawaan (native) untuk Regular Expression melalui RegExp object, sehingga penggunaannya sangat fleksibel dan mudah diintegrasikan ke berbagai fungsi string. Berikut beberapa keunggulan utama menggunakan regex di JavaScript:

  1. Native support
    Tidak perlu menginstal library tambahan, cukup gunakan /pattern/ atau new RegExp().

  2. Integrasi kuat dengan metode string
    Regex dapat digunakan langsung di method seperti match(), replace(), search(), dan split().

  3. Performa tinggi
    Regex memungkinkan operasi pencarian dan validasi dilakukan lebih cepat dibandingkan logika manual.

  4. Lebih ringkas dan efisien
    Alih-alih menulis banyak kondisi, cukup gunakan satu pola regex untuk hasil yang sama.

  5. Cocok untuk validasi input modern
    Mulai dari email, password, nomor telepon, hingga format tanggal.

Dengan berbagai keunggulan ini, regex menjadi alat yang sangat penting bagi developer JavaScript—baik backend, frontend, maupun full stack.

4. Studi kasus sederhana: pencarian teks

Salah satu penggunaan paling dasar dari regex adalah mencari teks. Misalnya, kamu ingin mencari apakah sebuah kata muncul dalam sebuah kalimat. Dengan regex, ini bisa dilakukan dalam satu baris:

const text = "Belajar regex di JavaScript memang menyenangkan!";
const pattern = /regex/;

console.log(pattern.test(text)); // trueCode language: JavaScript (javascript)

Contoh lain: mencari semua huruf vokal dalam sebuah string.

const kalimat = "Regular Expression sangat berguna!";
const vokal = kalimat.match(/[aeiou]/gi);

console.log(vokal);
// Output: ["e", "u", "a", "E", "e", "i", "o", "a", "a", "e", "u", "a"]Code language: JavaScript (javascript)

Penggunaan sederhana ini menggambarkan kekuatan regex sebagai alat pencarian dan analisis teks dengan cara yang cepat dan efisien.

Sintaks Dasar Regex di JavaScript

Sintaks adalah fondasi utama dalam memanfaatkan regular expression JavaScript. Untuk dapat membuat pola yang akurat dan efisien, kamu perlu memahami cara membuat regex, karakter dasar yang digunakan, hingga bagaimana flags bekerja dalam proses pencarian. Bagian ini akan membantu kamu memahami konsepnya secara bertahap.

1. Membuat Regex: Literal vs Constructor

Dalam JavaScript, regex dapat dibuat dengan dua cara:

1. Regex Literal

Cara paling umum dan simpel.

const regex = /hello/;Code language: JavaScript (javascript)

Keunggulannya:

  • Lebih mudah dibaca
  • Lebih cepat dituliskan
  • Ideal untuk pola statis

2. Regex Constructor

Digunakan saat pola regex bersifat dinamis (dibuat dari variable).

const pattern = "hello";
const regex = new RegExp(pattern, "g");Code language: JavaScript (javascript)

Keunggulannya:

  • Mudah untuk membuat pola runtime
  • Dapat menggabungkan nilai variable ke dalam regex

Namun syntax-nya sedikit lebih panjang, dan kamu perlu melakukan escape ekstra saat menggunakan karakter khusus.

2. Karakter Biasa dan Meta Character

Regex terdiri dari dua jenis karakter:

1. Karakter Biasa

Digunakan untuk mencocokkan karakter apa adanya. Contoh:

  • a → mencari huruf “a”
  • cat → mencari kata “cat”

2. Meta Character (Karakter Khusus)

Digunakan untuk memberi arti tertentu pada pola regex.

Contoh meta character penting:

MetaArti
.Mencocokkan sembarang 1 karakter
\dDigit 0–9
\wAlphanumeric + underscore
\sWhitespace
^Awal string
$Akhir string
*0 atau lebih pengulangan
+1 atau lebih pengulangan
?Opsional (0 atau 1 kali)
[]Character set
()Grouping / capturing

Meta character inilah yang membuat regex JavaScript begitu fleksibel dan kuat dalam pattern matching.

3 Flags Regex (g, i, m)

Flags adalah penanda tambahan yang mengubah perilaku regex.

1. g — global

Mencari semua hasil, bukan hanya satu.

"hello hello".match(/hello/g);Code language: JavaScript (javascript)

2. i — case insensitive

Mengabaikan huruf kapital atau kecil.

/hello/i.test("HELLO"); // trueCode language: JavaScript (javascript)

3. m — multiline

Memperlakukan ^ dan $ sebagai awal/akhir setiap baris, bukan keseluruhan string.

/^hi/m.test("hello\nhi"); // trueCode language: JavaScript (javascript)

Flags dapat digabungkan:

/hello/gi;

4. Escape Character dan Special Character

Karena regex memiliki banyak karakter khusus, kamu perlu melakukan escape menggunakan \ ketika ingin mencocokkannya secara literal.

Contoh karakter yang harus di-escape:

. * + ? ^ $ { } ( ) | [ ] \

Contoh penggunaan:

const regex = /\./; // mencari titik "."Code language: JavaScript (javascript)

Jika menggunakan constructor:

const regex = new RegExp("\\.");Code language: JavaScript (javascript)

Karena constructor juga menggunakan escape string JavaScript, kamu harus menggandakan backslash.

Metode Regex di JavaScript

Setelah memahami sintaks dasar regex di JavaScript, langkah berikutnya adalah mempelajari berbagai metode bawaan JavaScript yang sering digunakan bersama regular expression. Metode-metode ini adalah alat utama yang akan kamu pakai untuk melakukan pencocokan pola, mencari teks, memecah string, hingga memodifikasi teks.

Di bagian ini, kita akan membahas semua metode penting yang wajib dikuasai:

  • test()
  • match()
  • replace()
  • search()
  • split()

Setiap metode memiliki fungsi berbeda dan sangat berguna dalam berbagai situasi pemrograman.

1. test() → Cek Pattern

Metode test() digunakan untuk mengetahui apakah sebuah string cocok dengan pola regex. Metode ini akan mengembalikan:

  • true jika ada kecocokan
  • false jika tidak ada kecocokan

Contoh:

const regex = /hello/;
console.log(regex.test("hello world")); // trueCode language: JavaScript (javascript)

Cocok digunakan untuk validasi sederhana, seperti:

  • cek apakah input mengandung angka
  • cek apakah password mengandung huruf besar
  • cek apakah username valid

Contoh validasi angka:

const numberCheck = /\d/;
console.log(numberCheck.test("aris123")); // trueCode language: JavaScript (javascript)

2. match() → Mengambil Hasil Cocok

Metode match() digunakan untuk mengambil semua hasil yang cocok dengan pola tertentu. Jika regex memiliki flag g, hasilnya berupa array semua kecocokan. Tanpa g, hasilnya akan mengembalikan informasi detail termasuk capturing group.

Contoh tanpa flag g:

const text = "Hello JavaScript";
const result = text.match(/Java/);
console.log(result);Code language: JavaScript (javascript)

Outputnya:

  • hasil kecocokan
  • index ditemukan
  • input asli

Contoh dengan flag g:

const text = "apple, banana, apple, mango";
const result = text.match(/apple/g);
console.log(result); // ["apple", "apple"]Code language: JavaScript (javascript)

Metode ini sangat membantu saat mengambil data seperti:

  • list kata tertentu
  • semua angka dalam string
  • format tertentu (email, URL)

3. replace() → Mengganti Teks

Metode replace() digunakan untuk mengganti bagian string yang cocok dengan regex. Fungsi ini sangat sering dipakai dalam pengolahan teks.

Contoh mengganti satu kata:

const text = "Halo dunia!";
console.log(text.replace(/dunia/, "JavaScript"));Code language: JavaScript (javascript)

Contoh mengganti banyak kata (pakai flag g):

const text = "apple banana apple mango";
const result = text.replace(/apple/g, "orange");
console.log(result);Code language: JavaScript (javascript)

Contoh mengganti pola spesifik:

const text = "ID: 123-456";
console.log(text.replace(/\d/g, "*")); // "ID: ***-***"Code language: JavaScript (javascript)

replace() juga mendukung fungsi callback untuk penggantian yang lebih dinamis.

4. search() → Menemukan Index Pattern

Metode search() digunakan untuk menemukan index pertama dari pattern yang cocok dengan regex. Berbeda dengan match(), metode ini hanya mengembalikan:

  • posisi index hasil kecocokan pertama, atau
  • -1 jika tidak ditemukan

Contoh:

const text = "JavaScript sangat keren";
console.log(text.search(/keren/)); // 17Code language: JavaScript (javascript)

Metode ini sangat cocok jika kamu hanya ingin tahu posisi pertama tanpa butuh data detail lain.

5. split() → Memecah String Berdasarkan Pattern

Metode split() digunakan untuk memecah string menjadi array berdasarkan pola regex. Ini lebih fleksibel daripada split biasa yang hanya bisa menggunakan string.

Contoh memecah berdasarkan spasi:

const text = "belajar regex javascript lengkap";
const result = text.split(/\s+/);
console.log(result);Code language: JavaScript (javascript)

Contoh memecah berdasarkan koma dengan optional spasi:

const list = "apel, jeruk,  mangga, pisang";
const result = list.split(/,\s*/);
console.log(result);Code language: JavaScript (javascript)

Contoh mengambil angka dari teks:

const data = "ID-123-456-789";
const numbers = data.split(/\D+/);
console.log(numbers); // ["", "123", "456", "789"]Code language: JavaScript (javascript)

Pattern Matching Lanjutan

Setelah memahami dasar-dasar regex, kini saatnya masuk ke bagian yang lebih seru yaitu pattern matching lanjutan. Di sini kamu akan belajar berbagai teknik yang membuat Regular Expression JavaScript menjadi sangat fleksibel dan kuat. Mulai dari character class, quantifiers, anchors, hingga grouping dan alternation. Semua konsep ini akan memperluas kemampuanmu dalam membuat pola yang lebih kompleks.

Character Class [abc], [^abc]

Apa itu Character Class?

Character class adalah fitur regex yang memungkinkan kamu mencocokkan satu karakter dari beberapa kemungkinan karakter.

Contoh [abc]:

Pola ini berarti mencocokkan salah satu karakter: a, b, atau c.

const regex = /[abc]/;
console.log(regex.test("aris")); // true (ada huruf a)Code language: JavaScript (javascript)

[a-z]

Rentang karakter dari a sampai z.

const regex = /[a-z]/;Code language: JavaScript (javascript)

Negated Class [^abc]

^ di dalam bracket berarti bukan salah satu dari a, b, atau c.

const regex = /[^abc]/;
console.log(regex.test("ddd")); // true (karena bukan a b c)Code language: JavaScript (javascript)

Quantifiers *, +, ?, {n}, {n,m}

Quantifier digunakan untuk menentukan jumlah kemunculan dari sebuah karakter atau grup.

* → 0 atau lebih

const regex = /a*/;
console.log("aaa".match(regex)); // ["aaa"]Code language: JavaScript (javascript)

+ → 1 atau lebih

const regex = /a+/;
console.log("baaa".match(regex)); // ["aaa"]Code language: JavaScript (javascript)

? → 0 atau 1 (opsional)

const regex = /colou?r/;
console.log("color".match(regex)); // ["color"]
console.log("colour".match(regex)); // ["colour"]Code language: JavaScript (javascript)

{n} → tepat n kali

const regex = /\d{3}/;
console.log("Kode: 123".match(regex)); // ["123"]Code language: JavaScript (javascript)

{n,} → minimal n kali

const regex = /\d{2,}/;
console.log("12345".match(regex)); // ["12345"]Code language: JavaScript (javascript)

{n,m} → antara n hingga m kali

const regex = /\d{2,4}/;
console.log("12345".match(regex)); // ["1234"]Code language: JavaScript (javascript)

Anchors ^, $, \b, \B

Anchors digunakan untuk mencocokkan posisi dalam string, bukan karakter.

^ → awal string

const regex = /^Hello/;
console.log(regex.test("Hello world")); // trueCode language: JavaScript (javascript)

$ → akhir string

const regex = /world$/;
console.log(regex.test("Hello world")); // trueCode language: JavaScript (javascript)

\b → word boundary (batas kata)

Digunakan saat ingin mencocokkan pola pada batas kata.

const regex = /\bcat\b/;
console.log(regex.test("black cat white dog")); // trueCode language: JavaScript (javascript)

\B → kebalikan dari \b

const regex = /cat\B/;
console.log(regex.test("category")); // trueCode language: JavaScript (javascript)

Grouping () dan Backreference \1

Grouping digunakan untuk:

  • Mengelompokkan pola
  • Menangkap bagian tertentu (capturing group)
  • Membuat backreference (mengacu ke hasil sebelumnya)

Contoh grouping sederhana

const regex = /(ha)+/;
console.log("hahaha".match(regex)); // ["hahaha"]Code language: JavaScript (javascript)

Backreference \1

\1 mengacu pada hasil group pertama.

const regex = /(\w+)\s\1/;
console.log(regex.test("hello hello")); // trueCode language: JavaScript (javascript)

Cocok untuk mendeteksi teks duplikat.

Alternation |

Fitur ini mirip dengan operator OR, memungkinkan kamu mencocokkan beberapa pola.

Contoh:

const regex = /apple|banana|mango/;
console.log(regex.test("saya makan banana")); // trueCode language: JavaScript (javascript)

Contoh dengan grouping:

const regex = /gr(a|e)y/;
console.log(regex.test("gray")); // true
console.log(regex.test("grey")); // trueCode language: JavaScript (javascript)

Regex untuk Validasi Input

Regex menjadi sangat berguna dalam proses validasi input, terutama pada aplikasi web yang membutuhkan pengecekan cepat sebelum data dikirim ke server. Validasi input dengan regex di JavaScript memberikan fleksibilitas tinggi, efisiensi, dan dapat mencegah berbagai error maupun data tidak valid sejak dini.

Pada bagian ini, kita akan membahas cara membuat pola regex untuk memvalidasi email, nomor telepon, password, URL, hingga IP address, lengkap dengan contoh implementasinya dalam form validation JavaScript.

Validasi Email

Validasi email adalah salah satu penggunaan regex yang paling umum. Tujuan utama regex email adalah memastikan input memiliki struktur:

username @ domain . extension

Regex yang sering digunakan untuk email:

const emailRegex = /^[\w.-]+@[\w.-]+\.\w{2,}$/;Code language: JavaScript (javascript)

Contoh penggunaan:

const email = "user@example.com";
console.log(emailRegex.test(email)); // trueCode language: JavaScript (javascript)

Penjelasan pola:

  • ^[\w.-]+ → username (boleh huruf, angka, titik, dash)
  • @ → wajib ada
  • [\w.-]+ → domain
  • \.\w{2,}$ → extension minimal 2 karakter

Validasi Nomor Telepon

Format nomor telepon berbeda-beda, tetapi kita bisa membuat regex dasar yang fleksibel.

Contoh regex nomor telepon umum:

const phoneRegex = /^\+?\d{9,15}$/;Code language: JavaScript (javascript)

Maksud:

  • +? → opsional
  • \d{9,15} → panjang 9–15 digit

Contoh penggunaan:

console.log(phoneRegex.test("+628123456789")); // true
console.log(phoneRegex.test("08123456789")); // trueCode language: JavaScript (javascript)

Contoh format lebih kompleks (dengan spasi dan dash):

const phoneRegex2 = /^[+\d]?(?:[\d-.\s]{7,15})$/;Code language: JavaScript (javascript)

Validasi Password Kuat

Password yang kuat biasanya wajib memenuhi syarat berikut:

  • Minimal 8 karakter
  • Ada huruf besar
  • Ada huruf kecil
  • Ada angka
  • Ada simbol

Regex password kuat:

const strongPasswordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;Code language: JavaScript (javascript)

Contoh:

console.log(strongPasswordRegex.test("ArisDev@2025")); // trueCode language: JavaScript (javascript)

Penjelasan:

  • (?=.*[a-z]) → ada huruf kecil
  • (?=.*[A-Z]) → ada huruf besar
  • (?=.*\d) → ada angka
  • (?=.*[\W_]) → ada simbol
  • .{8,} → minimal 8 karakter

Validasi URL dan IP Address

Validasi URL

Regex sederhana untuk URL:

const urlRegex = /^(https?:\/\/)?([\w-]+\.)+[\w-]{2,}(\/.*)?$/;Code language: JavaScript (javascript)

Contoh:

console.log(urlRegex.test("https://arisdev.com")); // trueCode language: JavaScript (javascript)

Penjelasan:

  • optional http:// atau https://
  • domain + extension
  • optional path

Validasi IPv4

Format IPv4: 0-255.0-255.0-255.0-255

Regex:

const ipRegex = /^(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)){3}$/;Code language: JavaScript (javascript)

Contoh:

console.log(ipRegex.test("192.168.1.1")); // trueCode language: JavaScript (javascript)

Penjelasan:

  • 25[0-5] → 0-255
  • 2[0-4]\d → 0-249
  • 1\d{2} → 0-199
  • [1-9]?\d → 0-99

Validasi IPv6

Format IPv6: 0-ffff:0-ffff:0-ffff:0-ffff:0-ffff:0-ffff:0-ffff:0-ffff

Regex:

const ipRegex = /^(?:[A-F0-9]{1,4}:){7}[A-F0-9]{1,4}$/i;Code language: JavaScript (javascript)

Contoh: console.log(ipRegex.test(“2001:0db8:85a3:0000:0000:8a2e:0370:7334”)); // true

Penjelasan:

  • ?:[A-F0-9]{1,4} → 0-ffff
  • {7} → 7 kali
  • [A-F0-9]{1,4} → 0-ffff
  • i → case-insensitive

Contoh Penggunaan Regex di Form Validation JavaScript

Berikut contoh simulasi form sederhana:

HTML (gambaran saja)

<input id="email" type="text">
<input id="password" type="password">
<button onclick="validate()">Submit</button>
<p id="message"></p>Code language: HTML, XML (xml)

JavaScript dengan regex:

function validate() {
    const email = document.getElementById("email").value;
    const password = document.getElementById("password").value;

    const emailRegex = /^[\w.-]+@[\w.-]+\.\w{2,}$/;
    const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[\W_]).{8,}$/;

    if (!emailRegex.test(email)) {
        return showMessage("Email tidak valid!");
    }

    if (!passwordRegex.test(password)) {
        return showMessage("Password terlalu lemah!");
    }

    showMessage("Semua input valid!");
}

function showMessage(msg) {
    document.getElementById("message").innerText = msg;
}Code language: JavaScript (javascript)

Fitur di atas sangat sering ditemukan pada aplikasi web modern dan bisa dikembangkan menjadi validasi form yang lebih kompleks.

Regex Flags dan Opsi Tambahan

Regex di JavaScript tidak hanya tentang pola, karakter khusus, dan quantifier. Ada juga flags, yaitu opsi tambahan yang dapat mengubah perilaku pencarian pola. Flags ini sangat penting karena memengaruhi cara regex melakukan pencarian dalam string, menangani huruf besar-kecil, baris baru, karakter Unicode, dan lain-lain.

Dalam praktiknya, flags membantu membuat regex menjadi lebih fleksibel dan dapat digunakan pada berbagai kasus kompleks.

Global Flag: g

Flag g digunakan untuk mencari semua kecocokan (global match), bukan hanya kecocokan pertama.

Contoh tanpa g:

const text = "apple banana apple mango";
console.log(text.match(/apple/)); 
// output: ["apple"]Code language: JavaScript (javascript)

Hanya menemukan kecocokan pertama.

Contoh dengan g:

console.log(text.match(/apple/g));
// output: ["apple", "apple"]Code language: JavaScript (javascript)

Kapan menggunakan g?

  • Mencari semua angka di teks
  • Menghitung jumlah kemunculan kata
  • Parsing data dengan pola berulang

Case-Insensitive Flag: i

Flag i membuat pencarian tidak membedakan huruf besar dan kecil.

Contoh:

const regex = /hello/i;

console.log(regex.test("Hello")); // true
console.log(regex.test("HELLO")); // true
console.log(regex.test("hElLo")); // trueCode language: JavaScript (javascript)

Kapan digunakan?

  • Validasi email (huruf besar kecil tidak penting)
  • Mencari kata tertentu dalam paragraf
  • Mencocokkan username atau nama pengguna

Multiline Flag: m

Secara default, ^ dan $ hanya berfungsi di awal dan akhir seluruh string.

Dengan flag m, keduanya berlaku di setiap baris (multi-line mode).

Tanpa m:

const text = "Hello\nWorld";
console.log(text.match(/^World/)); 
// null (karena bukan awal string)Code language: JavaScript (javascript)

Dengan m:

console.log(text.match(/^World/m));
// ["World"]Code language: JavaScript (javascript)

Kapan dipakai?

  • Membaca file log
  • Memproses teks yang memiliki banyak baris
  • Mencocokkan pola pada setiap baris input

Sticky Flag: y

Flag y mencocokkan regex mulai dari posisi terakhir (lastIndex), bukan mencari ke seluruh string. Ini lebih ketat dibanding flag g.

Contoh:

const regex = /a/y;
const text = "aaba";

regex.lastIndex = 1;
console.log(regex.test(text)); // false (karena text[1] = a? Tidak—text[1] = a, tapi posisi ketat)Code language: JavaScript (javascript)

Flag y digunakan untuk parsing ketat, misalnya saat membaca token satu per satu.

Unicode Flag: u

Regex tanpa flag u kadang gagal saat mencocokkan karakter Unicode seperti emoji, huruf Mandarin, atau bahasa lain.

Misal:

console.log(/💖/.test("💖")); // false di beberapa kasus tanpa uCode language: JavaScript (javascript)

Dengan u:

console.log(/💖/u.test("💖")); // trueCode language: JavaScript (javascript)

Flag u sangat penting dalam aplikasi internasional.

Kombinasi Flags untuk Kasus Kompleks

Flags dapat dikombinasikan sesuai kebutuhan.

Contoh kombinasi umum:

gi — global + case-insensitive

const regex = /apple/gi;
const text = "Apple apple aPPle";

console.log(text.match(regex));
// ["Apple", "apple", "aPPle"]Code language: JavaScript (javascript)

gm — global + multiline

const text = `
    user1
    user2
    user3
    `;

console.log(text.match(/^user\d$/gm));
// ["user1", "user2", "user3"]Code language: JavaScript (javascript)

gim — lengkap

Global, case-insensitive, multiline.

const regex = /^hello/ gim;Code language: JavaScript (javascript)

Contoh kasus nyata, misalnya kamu ingin mencari seluruh kata “error” (tanpa peduli huruf besar kecil) pada setiap baris log:

const logRegex = /^error/ gim;Code language: JavaScript (javascript)

Regex tersebut akan:

  • Mencari di seluruh file .log (flag g)
  • Tidak peduli ERROR, Error, error (flag i)
  • Berlaku untuk setiap baris log (flag m)

Ringkasan Flags Regex

FlagDeskripsiKapan Dipakai
gglobal matchmencari semua kecocokan
icase-insensitivepencarian tanpa peduli kapital
mmultiline^ dan $ berlaku di setiap baris
ysticky matchparsing ketat berbasis posisi
uunicode supportemoji, huruf non-latin

Escape Character dan Special Character

Pada bagian ini kita akan membahas escape character dan special character yang menjadi fondasi penting dalam regular expression JavaScript. Banyak pemula yang kesulitan memahami bagian ini karena karakter-karakter tersebut memiliki fungsi khusus dan tidak bisa digunakan sembarangan. Dengan memahami daftar simbol penting ini, kamu akan semakin mahir membuat pattern regex yang kuat, fleksibel, dan tepat sasaran.

Escape Sequence Penting: \d, \w, \s, \D, \W, \S

Escape sequence digunakan untuk mewakili kelompok karakter tertentu tanpa menuliskannya satu per satu. Inilah yang membuat regex sangat efisien.

1. \d → digit (0–9)

Mencocokkan angka dari 0 hingga 9.

let regex = /\d+/;
console.log("Hai123".match(regex)); // ["123"]Code language: JavaScript (javascript)

2. \D → selain digit

Kebalikan dari \d.

let regex = /\D+/;
console.log("JS123".match(regex)); // ["JS"]Code language: JavaScript (javascript)

3. \w → word character (A–Z, a–z, 0–9, _)

Umumnya dipakai untuk validasi username, identifier, dan teks umum.

let regex = /\w+/;
console.log("user_01".match(regex)); // ["user_01"]Code language: JavaScript (javascript)

4. \W → selain word character

Kebalikan dari \w.

let regex = /\W+/;
console.log("Hello@2025".match(regex)); // ["@"]Code language: JavaScript (javascript)

5. \s → whitespace (spasi, tab, newline, dll.)

let regex = /\s/;
console.log("Hello World".match(regex)); // [" "]Code language: JavaScript (javascript)

6. \S → selain whitespace

let regex = /\S+/;
console.log("Hi There".match(regex)); // ["Hi"]Code language: JavaScript (javascript)

Escape sequence ini sangat sering digunakan dalam validasi input seperti email, password, nama, dan format teks lainnya.

Literal Escape: \\, \.

Beberapa karakter memiliki fungsi khusus dalam regex, sehingga jika kamu ingin menggunakannya sebagai karakter biasa (literal), kamu harus men-escape karakter tersebut.

1. \\ → mencocokkan backslash literal

Regex untuk mencari backslash harus ditulis \

let regex = /\\/;
console.log("\\folder".match(regex)); // ["\"]Code language: JavaScript (javascript)

2. \. → mencocokkan titik literal “.”

Karakter “.” dalam regex berarti “mencocokkan karakter apa saja”, jadi perlu di-escape jika ingin mencari titik sebenarnya.

let regex = /\./;
console.log("v1.2.3".match(regex)); // ["."]Code language: JavaScript (javascript)

Karakter Khusus Regex: . ^ $ * + ? ( ) [ ] { } |

Ini adalah karakter-karakter “sakral” dalam regex. Masing-masing memiliki fungsi unik:

KarakterFungsi
.mencocokkan semua karakter kecuali newline
^anchor: awal string
$anchor: akhir string
*quantifier: 0 atau lebih
+quantifier: 1 atau lebih
?quantifier opsional / lazy quantifier
()grouping & capturing
[]character class
{}quantifier jumlah
``OR / alternation

Contoh penggunaan beragam karakter khusus

1. Kleene star * dan plus +

console.log("aaa".match(/a*/)); // ["aaa"]
console.log("aaa".match(/a+/)); // ["aaa"]Code language: JavaScript (javascript)

2. Grouping ()

let regex = /(ha)+/;
console.log("hahaha".match(regex)); // ["hahaha"]Code language: JavaScript (javascript)

3. Alternation |

let regex = /kucing|anjing/;
console.log("Saya punya kucing".match(regex)); // ["kucing"]Code language: JavaScript (javascript)

4. Character class []

let regex = /[aeiou]/;
console.log("halo".match(regex)); // ["a"]Code language: JavaScript (javascript)

5. Anchors ^ dan $

let regex = /^Hello/;
console.log("Hello World".match(regex)); // ["Hello"]Code language: JavaScript (javascript)

Mengapa harus tahu karakter khusus?

Karena salah satu kesalahan terbesar pemula dalam regex adalah:

  • Menggunakan karakter khusus tanpa tahu fungsinya.
  • Mencari karakter literal tanpa di-escape.
  • Dengan memahami daftar ini, kamu bisa membuat regex jauh lebih akurat dan efisien.

Kesimpulan

Setelah mempelajari semua bagian dari tutorial lengkap ini, kamu kini telah memahami fondasi kuat tentang bagaimana regular expression JavaScript bekerja, bagaimana cara menulis pattern yang benar, hingga bagaimana melakukan pattern matching untuk kebutuhan validasi maupun manipulasi string.

Kita telah membahas cara membuat regex menggunakan literal dan constructor, memahami karakter dasar hingga meta character, menggunakan escape sequence, serta mengeksplorasi flags seperti g, i, dan m yang sangat penting untuk mengontrol perilaku pencarian. Kamu juga telah belajar berbagai metode bawaan JavaScript seperti test(), match(), replace(), search(), dan split() yang memungkinkan regex digunakan secara praktis dalam skenario nyata.

Tidak berhenti sampai di situ, kamu juga sudah mempelajari pattern matching lanjutan seperti character class, quantifier, anchors, grouping, backreference, hingga alternation |. Untuk penerapan nyata, kamu telah mempelajari cara membuat regex untuk validasi — seperti email, nomor telepon, password, URL, hingga IP address. Semua ini merupakan fondasi penting yang membuatmu siap membangun berbagai fitur berbasis teks yang lebih fleksibel dan canggih.

Dengan memahami seluruh materi dari artikel ini, kamu sudah memiliki dasar kuat untuk menggunakan regex dalam berbagai kebutuhan pengembangan web modern. Teruslah berlatih, eksplorasi pola-pola baru, dan kombinasikan regex dengan JavaScript untuk membangun aplikasi yang lebih cepat, aman, dan elegan.

1 JavaScript Dasar

2 JavaScript Menengah

Level Menengah fokus pada kemampuan yang lebih luas, seperti manipulasi DOM, event JavaScript, form validation, JSON, LocalStorage, SessionStorage, hingga asynchronous JavaScript dasar. Level ini membantu pengguna memahami bagaimana JavaScript bekerja untuk membuat website lebih interaktif dan dinamis, sangat relevan untuk tutorial dasar yang mengarahkan ke kemampuan membuat fitur web praktis.

3 JavaScript Lanjutan

4 JavaScript Mahir

5 JavaScript Ahli

Comments

Congrats, you have the opportunity to be the first commenter on this article. Have questions or suggestions? Please leave a comment to start discussion.

Leave comment

Alamat email Anda tidak akan dipublikasikan. Required fields are marked *

news-1701

sabung ayam online

yakinjp

yakinjp

rtp yakinjp

slot thailand

yakinjp

yakinjp

yakin jp

yakinjp id

maujp

maujp

maujp

maujp

sabung ayam online

sabung ayam online

judi bola online

sabung ayam online

judi bola online

slot mahjong ways

slot mahjong

sabung ayam online

judi bola

live casino

sabung ayam online

judi bola

live casino

SGP Pools

slot mahjong

sabung ayam online

slot mahjong

SLOT THAILAND

berita 128000696

berita 128000697

berita 128000698

berita 128000699

berita 128000700

berita 128000701

berita 128000702

berita 128000703

berita 128000704

berita 128000705

berita 128000706

berita 128000707

berita 128000708

berita 128000709

berita 128000710

berita 128000711

berita 128000712

berita 128000713

berita 128000714

berita 128000715

berita 128000716

berita 128000717

berita 128000718

berita 128000719

berita 128000720

berita 128000721

berita 128000722

berita 128000723

berita 128000724

berita 128000725

artikel-128000751

artikel-128000752

artikel-128000753

artikel-128000754

artikel-128000755

artikel-128000756

artikel-128000757

artikel-128000758

artikel-128000759

artikel-128000760

artikel-128000761

artikel-128000762

artikel-128000763

artikel-128000764

artikel-128000765

artikel-128000766

artikel-128000767

artikel-128000768

artikel-128000769

artikel-128000770

artikel-128000771

artikel-128000772

artikel-128000773

artikel-128000774

artikel-128000775

artikel-128000776

artikel-128000777

artikel-128000778

artikel-128000779

artikel-128000780

artikel-128000781

artikel-128000782

artikel-128000783

artikel-128000784

artikel-128000785

artikel-128000786

artikel-128000787

artikel-128000788

artikel-128000789

artikel-128000790

artikel 128000791

artikel 128000792

artikel 128000793

artikel 128000794

artikel 128000795

artikel 128000796

artikel 128000797

artikel 128000798

artikel 128000799

artikel 128000800

artikel 128000801

artikel 128000802

artikel 128000803

artikel 128000804

artikel 128000805

artikel 128000806

artikel 128000807

artikel 128000808

artikel 128000809

artikel 128000810

artikel 128000811

artikel 128000812

artikel 128000813

artikel 128000814

artikel 128000815

artikel 128000816

artikel 128000817

artikel 128000818

artikel 128000819

artikel 128000820

article 138000756

article 138000757

article 138000758

article 138000759

article 138000760

article 138000761

article 138000762

article 138000763

article 138000764

article 138000765

article 138000766

article 138000767

article 138000768

article 138000769

article 138000770

article 138000771

article 138000772

article 138000773

article 138000774

article 138000775

article 138000776

article 138000777

article 138000778

article 138000779

article 138000780

article 138000781

article 138000782

article 138000783

article 138000784

article 138000785

article 138000786

article 138000787

article 138000788

article 138000789

article 138000790

article 138000791

article 138000792

article 138000793

article 138000794

article 138000795

article 138000796

article 138000797

article 138000798

article 138000799

article 138000800

article 138000801

article 138000802

article 138000803

article 138000804

article 138000805

article 138000806

article 138000807

article 138000808

article 138000809

article 138000810

article 138000811

article 138000812

article 138000813

article 138000814

article 138000815

article 138000716

article 138000717

article 138000718

article 138000719

article 138000720

article 138000721

article 138000722

article 138000723

article 138000724

article 138000725

article 138000726

article 138000727

article 138000728

article 138000729

article 138000730

article 138000731

article 138000732

article 138000733

article 138000734

article 138000735

article 138000736

article 138000737

article 138000738

article 138000739

article 138000740

article 138000741

article 138000742

article 138000743

article 138000744

article 138000745

article 228000341

article 228000342

article 228000343

article 228000344

article 228000345

article 228000346

article 228000347

article 228000348

article 228000349

article 228000350

article 228000351

article 228000352

article 228000353

article 228000354

article 228000355

article 228000356

article 228000357

article 228000358

article 228000359

article 228000360

article 228000361

article 228000362

article 228000363

article 228000364

article 228000365

article 228000366

article 228000367

article 228000368

article 228000369

article 228000370

article 228000371

article 228000372

article 228000373

article 228000374

article 228000375

article 238000461

article 238000462

article 238000463

article 238000464

article 238000465

article 238000466

article 238000467

article 238000468

article 238000469

article 238000470

article 238000471

article 238000472

article 238000473

article 238000474

article 238000475

article 238000476

article 238000477

article 238000478

article 238000479

article 238000480

article 238000481

article 238000482

article 238000483

article 238000484

article 238000485

article 238000486

article 238000487

article 238000488

article 238000489

article 238000490

article 228000376

article 228000377

article 228000378

article 228000379

article 228000380

article 228000381

article 228000382

article 228000383

article 228000384

article 228000385

article 228000386

article 228000387

article 228000388

article 228000389

article 228000390

article 228000391

article 228000392

article 228000393

article 228000394

article 228000395

article 228000396

article 228000397

article 228000398

article 228000399

article 228000400

article 228000401

article 228000402

article 228000403

article 228000404

article 228000405

article 238000492

article 238000493

article 238000494

article 238000495

article 238000496

article 238000497

article 238000498

article 238000499

article 238000500

article 238000501

article 238000502

article 238000503

article 238000504

article 238000505

article 238000506

article 238000507

article 238000508

article 238000509

article 238000510

article 238000511

article 238000512

article 238000513

article 238000514

article 238000515

article 238000516

article 238000517

article 238000518

article 238000519

article 238000520

article 238000521

sumbar-238000381

sumbar-238000382

sumbar-238000383

sumbar-238000384

sumbar-238000385

sumbar-238000386

sumbar-238000387

sumbar-238000388

sumbar-238000389

sumbar-238000390

sumbar-238000391

sumbar-238000392

sumbar-238000393

sumbar-238000394

sumbar-238000395

sumbar-238000396

sumbar-238000397

sumbar-238000398

sumbar-238000399

sumbar-238000400

sumbar-238000401

sumbar-238000402

sumbar-238000403

sumbar-238000404

sumbar-238000405

sumbar-238000406

sumbar-238000407

sumbar-238000408

sumbar-238000409

sumbar-238000410

news-1701