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