Phương thức exec trong biểu thức chính quy JavaScript
Phương thức exec thực hiện tìm kiếm trong một chuỗi. Kết quả trả về là chuỗi con được tìm thấy và các nhóm bắt giữ (capturing groups) của nó. Mỗi lần gọi phương thức này sau đó sẽ bắt đầu tìm kiếm từ vị trí kết thúc của chuỗi con được tìm thấy trước đó.
Hãy xem xét một ví dụ. Giả sử chúng ta có chuỗi sau:
let str = '12 34 56';
Giả sử chúng ta có biểu thức chính quy sau:
let reg = /\d+/g;
Hãy gọi tuần tự phương thức của chúng ta cho chuỗi của chúng ta:
let res1 = reg.exec(str);
console.log(res1[0]); // 12
let res2 = reg.exec(str);
console.log(res2[0]); // 34
let res3 = reg.exec(str);
console.log(res3[0]); // 56
Sau ba lần gọi, vì trong chuỗi của chúng ta không còn khớp nào với biểu thức chính quy nữa, nên lần gọi phương thức tiếp theo sẽ trả về null:
let res4 = reg.exec(str);
console.log(res4); // null
Tính năng đặc biệt này của phương thức rất tiện lợi để sử dụng trong vòng lặp:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12], [34], [56]
}
Có thể tìm thấy không chỉ kết quả khớp, mà còn phân tách nó thành các nhóm bắt giữ:
let str = '12 34 56';
let reg = /(\d)(\d)/g;
let res;
while (res = reg.exec(str)) {
console.log(res); // [12, 1, 2], [34, 3, 4], [56, 5, 6]
}
Cho chuỗi sau:
let str = '12:37:57 15:48:58 17:59:59';
Hãy tìm tất cả các chuỗi con chứa thời gian trong đó và với mỗi kết quả tìm được, hãy phân tách giờ, phút và giây thành các nhóm bắt giữ.