อักขระแบ็กสแลชในสตริงของเร็กเอกซ์ใน JavaScript
ในสตริงที่มีนิพจน์ทั่วไป จำเป็นต้องหลีกเลี่ยง (ในความเป็นจริงคือเพิ่มเป็นสองเท่า) อักขระแบ็กสแลช ลองดูตัวอย่างกัน สมมติว่าเรามีสตริงต่อไปนี้:
let str = 'xyz';
สมมติว่าเรามีโค้ดต่อไปนี้ ที่มีนิพจน์ทั่วไป:
let reg = /\w+/;
let res = str.match(reg);
ลองเปลี่ยนนิพจน์ทั่วไป เป็นสตริง ในกรณีนี้เราจะพบ ปัญหากับอักขระแบ็กสแลช:
let reg = new RegExp('\w+'); // ไม่ทำงาน
let res = str.match(reg);
เพื่อแก้ปัญหา ให้เพิ่มอักขระแบ็กสแลชเป็นสองเท่า:
let reg = new RegExp('\\w+'); // ทำงาน
let res = str.match(reg);
โจทย์ฝึกปฏิบัติ
เปลี่ยนนิพจน์ทั่วไปเป็นสตริง:
let str = 'x1y x12y x123y';
let reg = /x\d+y/;
let res = str.replace(reg, '!');
เปลี่ยนนิพจน์ทั่วไปเป็นสตริง:
let str = 'x.y xay xby';
let reg = /x\.y/;
let res = str.replace(reg, '!');
เปลี่ยนนิพจน์ทั่วไปเป็นสตริง:
let str = 'x\\y';
let reg = /x\\y/;
let res = str.replace(reg, '!');