Phương thức match() trong JavaScript

Phương thức match() trong JavaScript
Phương thức match() trong JavaScript

Chức năng của Phương thức match() trong JavaScript

Phương thức match() trong JavaScript dùng để đếm số lần xuất hiện của một chuỗi con hoặc xem vị trí xuất hiện lần đầu tiên của chuỗi con, nếu chuỗi bạn cần tìm không có trong chuỗi gốc thì kết quả trả về null.

Cú pháp của Phương thức match() trong JavaScript

Tìm vị trí xuất hiện lần đầu tiên của chuỗi con

var mang = chuoigoc.match("chuoicon");

chuoigoc: Chuỗi gốc.

chuoicon: Chuỗi con cần kiểm tra, kết quả này cho bạn biết được vị trí (index) xuất hiện lần đầu tiên của chuỗi.

mang: Kết quả trả về mảng, dùng mang[index] để lấy vị trí xuất hiện lần đầu tiên của chuỗi con.

Đếm số lần xuất hiện của chuỗi con

var mang = chuoigoc.match(/chuoicon/g);

chuoigoc: Chuỗi gốc.

chuoicon: Chuỗi con cần kiểm tra.

mang: Kết quả trả về mảng, dùng mang[length] để đếm số lần xuất hiện của chuỗi con.

Code Phương thức match() trong JavaScript

<script>
var chuoigoc = "Web Mới xin kính chào quý khách, Web Mới xin được phục vụ quý khách";

// Tìm kết quả đầu tiên khớp với từ khóa 'xin'
document.write("<b>//Tìm kết quả đầu tiên khớp với từ khóa 'xin'</b><br>");
var ketqua = chuoigoc.match("xin");
document.write("0: "+ketqua['0']+"<br>groups: "+ketqua['groups']+"<br>index: "+ketqua['index']+"<br>input: "+ketqua['input']+"<br>length: "+ketqua['length']+"<br>");

// Tìm các kết quả khớp với từ khóa 'xin'
document.write("<b>//Tìm các kết quả khớp với từ khóa 'xin'</b><br>");
var ketquahai = chuoigoc.match(/xin/g);
document.write("length: "+ketquahai['length']+"<br>0: "+ketquahai['0']+"<br>1: "+ketquahai['1']+"<br>");
console.log(ketquahai);

// Tìm các kết quả khớp với từ khóa 'xinloi'
document.write("<b>//Tìm các kết quả khớp với từ khóa 'xinloi'</b><br>");
var ketquaba = chuoigoc.match(/xinloi/g);
document.write(ketquaba+"<br>");

// Tìm kết quả đầu tiên khớp với từ khóa 'xinloi'
document.write("<b>//Tìm kết quả đầu tiên khớp với từ khóa 'xinloi'</b><br>");
var ketquabon = chuoigoc.match("xinloi");
document.write(ketquabon+"<br>");
</script>

Kết quả:

//Tìm kết quả đầu tiên khớp với từ khóa 'xin'
0: xin
groups: undefined
index: 8
input: Web Mới xin kính chào quý khách, Web Mới xin được phục vụ quý khách
length: 1
//Tìm các kết quả khớp với từ khóa 'xin'
length: 2
0: xin
1: xin
//Tìm các kết quả khớp với từ khóa 'xinloi'
null
//Tìm kết quả đầu tiên khớp với từ khóa 'xinloi'
null

Chạy Thử

Những lỗi thường gặp khi sử dụng match() trong JavaScript

Phương thức match() khá tiện để tìm và lấy dữ liệu phù hợp với một biểu thức chính quy. Tuy nhiên, kết quả trả về có thể khác nhau tùy trường hợp. Một số lỗi nhỏ như không kiểm tra null, dùng sai cờ Regular Expression hoặc chọn nhầm phương thức có thể khiến chương trình phát sinh lỗi ngoài ý muốn.

Không xử lý trường hợp match() trả về null

Khi chuỗi không có nội dung phù hợp với biểu thức chính quy, match() có thể trả về null. Nếu sử dụng kết quả ngay mà không kiểm tra, việc truy cập thuộc tính hoặc phần tử của kết quả có thể gây lỗi.

const text = "JavaScript";
const result = text.match(/Python/);

if (result) {
    console.log(result[0]);
} else {
    console.log("Không tìm thấy kết quả");
}

Với những dữ liệu có thể không tồn tại kết quả khớp, nên kiểm tra giá trị trả về trước khi tiếp tục xử lý. Cách này giúp chương trình hoạt động ổn định hơn khi dữ liệu đầu vào thay đổi.

Nhầm giữa match() và matchAll() khi xử lý nhiều kết quả

match() và matchAll() đều có thể được sử dụng để tìm nhiều phần phù hợp, nhưng cách trả về dữ liệu không giống nhau. Khi cần duyệt chi tiết từng kết quả, đặc biệt là các nhóm bắt trong Regular Expression, matchAll() thường phù hợp hơn.

const text = "Mã 123 và mã 456";
const results = text.matchAll(/d+/g);

for (const result of results) {
    console.log(result[0]);
}

Nếu chỉ cần lấy danh sách các chuỗi khớp đơn giản, match() kết hợp với cờ g thường là lựa chọn ngắn gọn. Ngược lại, khi cần khai thác thông tin chi tiết từ từng lần khớp, nên cân nhắc matchAll().

Sử dụng sai cờ Regular Expression khi tìm kiếm chuỗi

Kết quả của match() chịu ảnh hưởng trực tiếp bởi các cờ của Regular Expression. Chẳng hạn, thiếu cờ g có thể khiến bạn chỉ nhận được kết quả khớp đầu tiên thay vì toàn bộ kết quả.

const text = "JS, JS, JS";

console.log(text.match(/JS/));
console.log(text.match(/JS/g));

Hai biểu thức trên cùng tìm chuỗi JS nhưng cho kết quả khác nhau. Vì vậy, trước khi sử dụng match(), cần xác định rõ muốn lấy một kết quả hay tất cả kết quả phù hợp.

Không kiểm tra kết quả trước khi truy cập phần tử trong mảng

Khi sử dụng match() với cờ g, kết quả thường là một mảng chứa các chuỗi phù hợp. Tuy nhiên, không nên mặc định rằng mảng luôn có phần tử. Nếu không tìm thấy dữ liệu, kết quả có thể là null.

const text = "Xin chào JavaScript";
const matches = text.match(/d+/g);

if (matches && matches.length > 0) {
    console.log(matches[0]);
} else {
    console.log("Không có số nào trong chuỗi");
}

Kiểm tra kết quả trước khi truy cập phần tử giúp tránh lỗi khi dữ liệu không đúng như dự kiến. Đây là thói quen nên áp dụng khi xử lý dữ liệu từ người dùng, biểu mẫu hoặc nội dung được lấy từ bên ngoài.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Phương thức match() trong JavaScript.

  • ★★★★★ ★★★★★
  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Phương thức match() trong JavaScript
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !