Temukan Apa yang Kamu Cari dengan Fungsi String Search

Temukan Apa yang Kamu Cari dengan Fungsi String Search
Photo by Markus Winkler / Unsplash

Dalam pemrograman, sering kali kita harus mencari sebuah teks atau pola tertentu dalam string. Misalnya, kamu ingin tahu apakah kata "JavaScript" ada dalam sebuah kalimat, atau mencari pola angka dalam sebuah string. Untungnya, JavaScript menyediakan metode String.search() yang dirancang untuk tugas ini.

Metode search() memungkinkan kamu mencari teks atau pola menggunakan regular expression (regex) secara efisien. Mari kita bahas bagaimana cara kerja fungsi ini, contoh aplikasinya, dan kapan waktu terbaik untuk menggunakannya.

search() adalah metode bawaan JavaScript yang digunakan untuk menemukan posisi pertama dari teks atau pola tertentu dalam sebuah string. Metode ini lebih canggih dibandingkan indexOf() karena mendukung pencarian berbasis regex.

Sintaks:

string.search(regex);
  • regex: Regular expression atau teks yang ingin dicari.
  • Return Value: Mengembalikan posisi pertama di mana pola ditemukan, atau -1 jika pola tidak ditemukan.

Perbedaan search() dan indexOf()

Meski keduanya digunakan untuk pencarian teks, ada perbedaan besar antara search() dan indexOf():

Fitur search() indexOf()
Mendukung Regex Ya Tidak
Case Sensitive Ya, tergantung regex Ya, selalu
Pengembalian Nilai Posisi pertama pola ditemukan Posisi pertama substring ditemukan

1. Mencari Teks Biasa

Jika kamu hanya mencari teks tanpa pola regex, cukup gunakan teks langsung:

let teks = "Belajar JavaScript itu menyenangkan!";
let posisi = teks.search("JavaScript");
console.log(posisi);

Output:

8

Artinya, kata "JavaScript" mulai muncul di index ke-8.

2. Menggunakan Regex untuk Pencarian

Metode search() mendukung penggunaan regex untuk pencarian yang lebih fleksibel.

Contoh:

Mencari kata "JavaScript" tanpa peduli huruf besar atau kecil:

let teks = "Belajar javascript itu menyenangkan!";
let posisi = teks.search(/javascript/i); // 'i' untuk ignore case
console.log(posisi);

Output:

8

3. Cek Apakah Pola Teks Ada

Kamu bisa menggunakan search() untuk memastikan apakah suatu pola ada dalam string. Jika search() mengembalikan -1, artinya pola tidak ditemukan.

let teks = "Saya suka coding!";
let ada = teks.search(/coding/) !== -1;
console.log(ada ? "Pola ditemukan!" : "Pola tidak ditemukan.");

Output:

Pola ditemukan!

1. Validasi Format Email

Kamu bisa menggunakan search() untuk memastikan sebuah teks adalah alamat email yang valid.

let email = "[email protected]";
let isValid = email.search(/^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/) !== -1;
console.log(isValid ? "Email valid" : "Email tidak valid");

2. Mencari Angka dalam String

Gunakan search() untuk menemukan apakah sebuah string mengandung angka.

let teks = "Nomor telepon saya adalah 08123456789";
let posisi = teks.search(/\d+/); // \d+ mencocokkan angka
console.log(posisi); // Output: 26

3. Mencari Kata di Tengah Kalimat

Dengan regex, kamu bisa mencari teks spesifik yang ada di tengah kalimat.

let teks = "Halo, nama saya Budi.";
let posisi = teks.search(/\bBudi\b/); // \b mencocokkan batas kata
console.log(posisi);

Output:

16
  1. Regex Tidak Tepat
    Jika regex yang kamu gunakan salah, hasil pencarian mungkin tidak sesuai harapan. Selalu uji regex-mu sebelum digunakan.
  2. Menggunakan String Tanpa Regex
    Meski search() mendukung string biasa, lebih baik gunakan regex untuk fleksibilitas lebih.
  3. Tidak Menangani Hasil -1
    Jika teks atau pola tidak ditemukan, hasilnya adalah -1. Jangan lupa menangani hasil ini untuk mencegah bug.
  • Mencari Pola Teks: Jika kamu perlu mencocokkan teks berdasarkan pola tertentu.
  • Validasi Data: Misalnya, memastikan format data seperti email atau nomor telepon.
  • Pencarian Case-Insensitive: Dengan regex, kamu bisa mencocokkan teks tanpa memedulikan huruf besar/kecil.

Kesimpulan

Metode search() di JavaScript adalah alat yang powerful untuk mencari teks atau pola dalam string. Dengan dukungan regex, metode ini sangat fleksibel untuk berbagai kebutuhan, mulai dari validasi data hingga analisis teks.