Penulisan JavaScript Regular Expressions dan RegExp Object

Hai teman-teman yang sedang belajar pemrograman! Hari ini, kita akan memulai perjalanan yang menarik ke dunia Regular Expressions (RegEx) di JavaScript. Jangan khawatir jika Anda belum pernah mendengar tentang RegEx sebelumnya - kita akan mulai dari dasar dan perlahan-lahan maju. Pada akhir panduan ini, Anda akan bisa menggunakan kekuatan RegEx seperti seorang ahli!

JavaScript - RegExp

Apa Itu Regular Expressions?

Regular Expressions, sering disingkat menjadi RegEx, adalah tools yang kuat untuk pencocokan dan manipulasi string. Picturkan mereka seperti sebuah bahasa khusus untuk mendeskripsikan pola dalam teks. Mereka seperti pisau swiss army untuk bekerja dengan string - multifungsi dan sangat berguna!

Mari kita 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 kita, dan kita mencoba untuk mencocokkannya dengan teks "Hello, world!". Hasilnya adalah false karena RegEx secara default case-sensitive.

RegExp Object

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

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 simpelannya.

Modifiers

Modifiers memungkinkan kita untuk mengubah perilaku pola RegEx. mari kita lihat beberapa modifier umum:

Modifier Deskripsi
i Pencocokan case-insensitive
g Pencocokan global (temukan semua cocokan, bukan hanya yang pertama)
m Pencocokan multi-line

Ini adalah contoh penggunaan modifier 'i':

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

Sekarang pola kita cocok dengan "Hello" tanpa memperhatikan case!

Kurung

Kurung dalam RegEx digunakan untuk mendefinisikan set atau rentang karakter yang akan dicocokkan:

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 hingga 9
[a-z] Cocok dengan setiap huruf kecil

Mari kita 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 cocokan di "hello" tapi tidak di "why".

Quantifiers

Quantifiers menentukan berapa banyak instance karakter, grup, atau kelas karakter harus hadir untuk mencocokkan ditemukan.

Quantifier Deskripsi
* 0 atau lebih instance
+ 1 atau lebih instance
? 0 atau 1 instance
{n} tepat n instance
{n,} n atau lebih instance
{n,m} antara n dan m instance

Ini adalah contoh yang menarik:

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 dalam RegEx adalah seperti yang disebut - mereka cocok dengan diri mereka sendiri. Misalnya, /hello/ cocok dengan urutan karakter "hello" tepat.

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

Metacharacters

Metacharacters memiliki arti khusus dalam RegEx:

Metacharacter 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 kita gunakan beberapa metacharacters:

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 biasa.

RegExp Properties

Objek RegExp memiliki beberapa properti yang berguna:

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

Ini adalah contoh penggunaan properti ini:

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

RegExp Methods

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

Method Deskripsi
exec() Melaksanakan pencarian pencocokan dalam string
test() Menguji pencocokan dalam string
toString() Mengembalikan representasi string dari regexp

Ini adalah contoh penggunaan 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 nya! Kita telah melihat dasar-dasar Regular Expressions di JavaScript. Ingat, latihan membuat Anda sempurna. Cobalah membuat pola Anda sendiri dan uji mereka. Sebelum Anda tahu, Anda akan menggunakan RegEx untuk menyelesaikan semua jenis masalah manipulasi string dengan mudah!

Selamat coding, dan semoga ekspresi RegEx Anda selalu menemukan cocokannya!

Credits: Image by storyset