สตริงพร้อมนิพจน์ทั่วไปใน JavaScript
นิพจน์ทั่วไปสามารถแสดงในรูปแบบของสตริงได้ วิธีนี้สะดวกในกรณีที่คุณต้องการแทรก ตัวแปรลงในนิพจน์ทั่วไป หรือสร้าง พวกมันขึ้นมาแบบไดนามิก
ลองดูตัวอย่าง สมมติว่าเรามีสตริงต่อไปนี้:
let str = 'img.png';
สมมติว่าเราใช้นิพจน์ทั่วไป ต่อไปนี้กับสตริงนี้:
let reg = /\.(png|jpg)$/;
let res = str.match(reg);
ลองเขียนนิพจน์ทั่วไปนี้ใหม่
ในรูปแบบของสตริง ซึ่งทำได้โดยใช้
ออบเจ็กต์พิเศษ RegExp:
let reg = new RegExp('\.(png|jpg)$');
let res = str.match(reg);
ตอนนี้ลองแยกส่วนหนึ่งของนิพจน์ทั่วไป ออกมาเป็นตัวแปรและแทรกโดยใช้ การเชื่อมสตริง:
let pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);
และตอนนี้เราจะแทรกตัวแปรโดยใช้ เทมเพลตสตริง:
let pat = 'png|jpg';
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
และตอนนี้มาสร้างส่วนหนึ่งของนิพจน์ทั่วไป จากอาร์เรย์:
let exts = ['png', 'jpg'];
let pat = exts.join('|')
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);
โจทย์ฝึกปฏิบัติ
ให้นำชื่อโดเมนโซนออกมา ไว้ในตัวแปรแยก:
let reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
ให้ปรับเปลี่ยนโจทย์ก่อนหน้าโดยคำนึงว่า โดเมนโซนถูกเก็บไว้ ในรูปแบบของอาร์เรย์:
let arr = ['ru', 'by', 'ua'];