การใช้ matchAll แบบ Global ใน Regular Expressions ของ JavaScript
เมธอด matchAll จะคืนค่าการจับคู่ทั้งหมด
ในรูปแบบของ ออบเจ็กต์ที่สามารถวนซ้ำได้,
โดยแต่ละองค์ประกอบ
จะประกอบด้วยอาร์เรย์ของข้อความที่พบและกลุ่มจับ (capturing groups)
เมธอดนี้สามารถเรียกใช้งานได้เฉพาะกับ modifier g
มาดูตัวอย่างกัน สมมติว่าเรามีสตริงต่อไปนี้:
let str = '12 34 56';
มาหาคู่ตัวเลขทั้งหมดและแยก ตัวเลขแต่ละหลักออกเป็นกลุ่มจับ:
let matches = str.matchAll(/(\d)(\d)/g);
มาวนซ้ำออบเจ็กต์ที่ได้ ด้วยลูปและแสดงผลการจับคู่ที่พบ:
for (let match of matches) {
console.log(match); // [12, 1, 2], [34, 3, 4], [56, 5, 6]
}
กำหนดสตริงต่อไปนี้:
let str = '12:37 15:48 17:59';
จงหาสตริงย่อยทั้งหมดที่แสดงเวลา และสำหรับแต่ละค่าที่พบ แยก ชั่วโมงและนาทีออกเป็นกลุ่มจับที่ต่างกัน
กำหนดสตริง:
let str = 'site.ru sss site.com zzz site.net';
จงได้อาร์เรย์ของชื่อโดเมนจากสตริงนี้ โดยเก็บชื่อโดเมนและ ส่วนขยาย (zone) ของโดเมนไว้ในกลุ่มจับที่ต่างกัน