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!
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