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ức | Trả về | Hỗ trợ Regex | Case-sensitive | Dùng khi nào |
|---|---|---|---|---|
search() | Index (number) hoặc -1 | Có | Mặc định có (regex i để tắt) | Cần vị trí, dùng regex |
indexOf() | Index (number) hoặc -1 | Không (chuỗi thuần) | Có | Tìm chuỗi đơn giản, nhanh hơn |
includes() | Boolean (true/false) | Không | Có | Chỉ cần biết có/không |
match() | Array matches hoặc null | Có | Regex quyết định | Cần lấy nội dung khớp, groups |
matchAll() | Iterator các match | Có (cần flag g) | Regex quyết định | Cầ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