Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm kiếm chuỗi trong JavaScript với String.search()

Phương thức String.search() tìm kiếm chuỗi con (hoặc regex) trong chuỗi và trả về vị trí index đầu tiên tìm thấy. Trả về -1 nếu không tìm thấy.

Cú pháp:

str.search(regexp | substring)
  • Nếu truyền chuỗi, nó được chuyển thành regex (không escape ký tự đặc biệt)
  • Không hỗ trợ cờ global g (luôn tìm lần đầu tiên)
  • Không phân biệt chữ hoa/thường trừ khi dùng regex với cờ i

Ví dụ minh họa

<!DOCTYPE html>
<html lang="vi">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Tìm kiếm chuỗi JavaScript</title>
  <style>
    body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
    .sample { font-size: 20px; font-weight: 500; margin: 10px 0; color: #333; }
    .result { font-size: 20px; font-weight: 500; margin: 10px 0; color: green; }
    button { padding: 8px 16px; cursor: pointer; }
  </style>
</head>
<body>
  <h1>Tìm kiếm chuỗi trong JavaScript</h1>
  <div class="sample" id="sample">Mùa xuân sắp đến rồi.</div>
  <div class="result" id="result"></div>
  <button class="btn" id="btn">NHẤN VÀO ĐÂY</button>
  <h3> Nhấn nút để tìm chuỗi 'xuân' trong văn bản trên </h3>
  <script>
    const btnEle = document.querySelector("#btn");
    const sampleEle = document.querySelector("#sample");
    const resEle = document.querySelector("#result");
    
    btnEle.addEventListener("click", () => {
      const text = sampleEle.innerHTML;
      const pos = text.search("xuân"); // Tìm "xuân"
      if (pos !== -1) {
        resEle.innerHTML = `Chuỗi 'xuân' tìm thấy tại vị trí: ${pos} (0-based)`;
      } else {
        resEle.innerHTML = "Không tìm thấy chuỗi 'xuân'";
      }
    });
  </script>
</body>
</html>

Kết quả

Văn bản: "Mùa xuân sắp đến rồi."

Khi nhấn nút: Chuỗi 'xuân' tìm thấy tại vị trí: 3 (0-based index)

So sánh các phương pháp tìm chuỗi:

Phương thứcTrả vềHỗ trợ RegexCase-sensitiveDùng khi nào
search()Index (number) hoặc -1CóMặc định có (regex i để tắt)Cần vị trí, dùng regex
indexOf()Index (number) hoặc -1Không (chuỗi thuần)CóTìm chuỗi đơn giản, nhanh hơn
includes()Boolean (true/false)KhôngCóChỉ cần biết có/không
match()Array matches hoặc nullCóRegex quyết địnhCần lấy nội dung khớp, groups
matchAll()Iterator các matchCó (cần flag g)Regex quyết địnhCần tất cả matches với groups

Ví dụ nâng cao với Regex:

const text = "Hello WORLD world";
text.search(/world/i);     // 6 (tìm "WORLD" - case insensitive)
text.search(/world/);      // 12 (tìm "world" - case sensitive)
text.search(/WORLD/);      // 6