สตริงพร้อมนิพจน์ทั่วไปใน JavaScript

นิพจน์ทั่วไปสามารถแสดงในรูปแบบของสตริงได้ วิธีนี้สะดวกในกรณีที่คุณต้องการแทรก ตัวแปรลงในนิพจน์ทั่วไป หรือสร้าง พวกมันขึ้นมาแบบไดนามิก

ลองดูตัวอย่าง สมมติว่าเรามีสตริงต่อไปนี้:

javascriptlet str = 'img.png';

สมมติว่าเราใช้นิพจน์ทั่วไป ต่อไปนี้กับสตริงนี้:

javascriptlet reg = /\.(png|jpg)$/;
let res = str.match(reg);

ลองเขียนนิพจน์ทั่วไปนี้ใหม่ ในรูปแบบของสตริง ซึ่งทำได้โดยใช้ ออบเจ็กต์พิเศษ RegExp:

javascriptlet reg = new RegExp('\.(png|jpg)$');
let res = str.match(reg);

ตอนนี้ลองแยกส่วนหนึ่งของนิพจน์ทั่วไป ออกมาเป็นตัวแปรและแทรกโดยใช้ การเชื่อมสตริง:

javascriptlet pat = 'png|jpg';
let reg = new RegExp('\.(' + pat + ')$');
let res = str.match(reg);

และตอนนี้เราจะแทรกตัวแปรโดยใช้ เทมเพลตสตริง:

javascriptlet pat = 'png|jpg';
let reg = new RegExp(`\.(${pat})$`);
let res = str.match(reg);

และตอนนี้มาสร้างส่วนหนึ่งของนิพจน์ทั่วไป จากอาร์เรย์:

javascriptlet exts = ['png', 'jpg'];
let pat  = exts.join('|')
let reg  = new RegExp(`\.(${pat})$`);
let res  = str.match(reg);

โจทย์ฝึกปฏิบัติ

Задание 1

ให้นำชื่อโดเมนโซนออกมา ไว้ในตัวแปรแยก:

javascriptlet reg = /^[a-z]+\.(ru|by|ua)$/;
let res = reg.test(str);
Задание 2

ให้ปรับเปลี่ยนโจทย์ก่อนหน้าโดยคำนึงว่า โดเมนโซนถูกเก็บไว้ ในรูปแบบของอาร์เรย์:

javascriptlet arr = ['ru', 'by', 'ua'];