Ekspresi Reguler JavaScript dan Objek RegExp

Halo sana, para programer pemula! Hari ini, kita akan mengemban perjalanan yang menarik ke dunia Ekspresi Reguler (RegEx) di JavaScript. Jangan khawatir jika Anda belum pernah mendengar tentang RegEx sebelumnya - kita akan mulai dari dasar dan naik tingkat perlahan-lahan. Pada akhir tutorial ini, Anda akan bisa menggunakannya dengan kekuatan RegEx seperti seorang ahli!

JavaScript - RegExp

Apa Itu Ekspresi Reguler?

Ekspresi Reguler, sering disingkat sebagai RegEx, adalah alat yang kuat untuk pemadanan dan manipulasi string. Picturkan mereka sebagai bahasa khusus untuk mendeskripsikan pola dalam teks. Mereka seperti pisau瑞士军刀 untuk bekerja dengan string - multifungsi dan sangat berguna!

Mari mulai dengan contoh sederhana:

let pattern = /hello/;
let text = "Hello, world!";
console.log(pattern.test(text));  // Output: false

Dalam contoh ini, /hello/ adalah pola RegEx kami, dan kita sedang mencoba apakah itu cocok dengan teks "Hello, world!". Hasilnya adalah false karena RegEx secara default sensitif terhadap huruf besar kecil.

Objek RegExp

Di JavaScript, kita dapat membuat pola RegEx menggunakan objek RegExp. Ini adalah cara nya:

let pattern1 = new RegExp("hello");
let pattern2 = /hello/;

console.log(pattern1.test("hello world"));  // Output: true
console.log(pattern2.test("hello world"));  // Output: true

Kedua cara membuat objek RegExp ini setara. Notasi literal (/pattern/) lebih sering digunakan karena ke mudahannya.

Modifikasi

Modifikasi memungkinkan kita untuk mengubah perilaku pola RegEx. Mari kita lihat beberapa modifikasi umum:

Modifikasi Deskripsi
i Pemadanan tak sensitif huruf besar kecil
g Pemadanan global (temukan semua kesamaan, bukan hanya yang pertama)
m Pemadanan multi baris

Ini adalah contoh menggunakan modifikasi 'i':

let pattern = /hello/i;
let text = "Hello, World!";
console.log(pattern.test(text));  // Output: true

Sekarang pola kita cocok dengan "Hello" tanpa peduli huruf besar kecil!

Kurung

Kurung di RegEx digunakan untuk mendefinisikan set atau rentang karakter untuk pemadanan:

Kurung Deskripsi
[abc] Cocok dengan setiap karakter dalam kurung
[^abc] Cocok dengan setiap karakter yang bukan dalam kurung
[0-9] Cocok dengan setiap digit dari 0 ke 9
[a-z] Cocok dengan setiap huruf kecil

Mari lihat contoh:

let pattern = /[aeiou]/;
console.log(pattern.test("hello"));  // Output: true
console.log(pattern.test("why"));    // Output: false

Pola ini cocok dengan setiap vokal. Itu menemukan kesamaan di "hello" tapi tidak di "why".

Kuantifier

Kuantifier menentukan berapa banyak instance karakter, kelompok, atau kelas karakter harus hadir untuk menemukan kesamaan.

Kuantifier Deskripsi
* 0 atau lebih banyak kejadian
+ 1 atau lebih banyak kejadian
? 0 atau 1 kejadian
{n} Tepat n kejadian
{n,} n atau lebih banyak kejadian
{n,m} Antara n dan m kejadian

Ini adalah contoh yang menyenangkan:

let pattern = /ba+/;
console.log(pattern.test("b"));      // Output: false
console.log(pattern.test("ba"));     // Output: true
console.log(pattern.test("baaaa"));  // Output: true

Pola ini cocok dengan "ba" diikuti oleh sejumlah "a" tambahan. Itu seperti suara domba: "baaaa"!

Karakter Literal

Karakter literal di RegEx adalah seperti itu - mereka cocok dengan diri mereka sendiri. Misalnya, /hello/ cocok dengan urutan karakter tepat "hello".

let pattern = /hello world/;
console.log(pattern.test("hello world"));  // Output: true
console.log(pattern.test("hello earth"));  // Output: false

Metakarakter

Metakarakter memiliki arti khusus di RegEx:

Metakarakter Deskripsi
. Cocok dengan setiap karakter tunggal
\d Cocok dengan setiap digit
\D Cocok dengan setiap non-digit
\w Cocok dengan setiap karakter kata
\W Cocok dengan setiap non-karakter kata
\s Cocok dengan setiap karakter spasi
\S Cocok dengan setiap non-karakter spasi

Mari gunakan beberapa metakarakter:

let pattern = /\d{3}-\d{3}-\d{4}/;
console.log(pattern.test("123-456-7890"));  // Output: true
console.log(pattern.test("abc-def-ghij"));  // Output: false

Pola ini cocok dengan format nomor telepon AS umum.

Properti RegExp

Objek RegExp memiliki beberapa properti yang berguna:

Properti Deskripsi
global Apakah bendera "g" diatur
ignoreCase Apakah bendera "i" diatur
multiline Apakah bendera "m" diatur
source Teks pola
lastIndex Indeks dimana untuk memulai pencarian berikutnya

Ini adalah cara mengguna properti ini:

let pattern = /hello/gi;
console.log(pattern.global);      // Output: true
console.log(pattern.ignoreCase);  // Output: true
console.log(pattern.source);      // Output: "hello"

Metode RegExp

Akhirnya, mari kita lihat beberapa metode yang dapat digunakan dengan objek RegExp:

Metode Deskripsi
exec() Eksekusi pencarian kesamaan dalam string
test() Tes kesamaan dalam string
toString() Mengembalikan representasi string regular expresi

Ini adalah contoh menggunakan exec():

let pattern = /\d+/g;
let text = "I have 2 apples and 3 oranges.";
let match;

while ((match = pattern.exec(text)) !== null) {
console.log(`Found ${match[0]} at index ${match.index}`);
}

// Output:
// Found 2 at index 7
// Found 3 at index 23

Kode ini menemukan semua angka dalam teks dan melaporkan posisi mereka.

Dan itu adalah! Kita telah meliputi dasar-dasar Ekspresi Reguler di JavaScript. Ingat, latihan membuat perfect. Cobalah untuk membuat pola Anda sendiri dan tes mereka. Sebelum Anda tahu, Anda akan menggunakan RegEx untuk memecahkan berbagai masalah manipulasi string dengan mudah!

Happy coding, dan semoga Ekspresi Reguler Anda selalu menemukan kesamaannya!

Credits: Image by storyset