วิธีสร้างรูปแบบ regex ซึ่งเชื่อมต่อกับตัวแปรมีดังนี้:
var test ="52";
var re = new RegExp("/\b"+test+"\b/");
alert('51,52,53'.match(re));
ขอบคุณ
วิธีสร้างรูปแบบ regex ซึ่งเชื่อมต่อกับตัวแปรมีดังนี้:
var test ="52";
var re = new RegExp("/\b"+test+"\b/");
alert('51,52,53'.match(re));
ขอบคุณ
คำตอบ:
var re = new RegExp("/\b"+test+"\b/");
\b
ในสตริงลิเทอรัลคืออักขระ backspace เมื่อใส่ regex ในสตริงลิเทอรัลคุณต้องมีการหลีกเลี่ยงอีกรอบ:
var re = new RegExp("\\b"+test+"\\b");
(คุณไม่จำเป็นต้องใช้//
ในบริบทนี้)
new RegExp('\b'+test+'\b');
When putting a regex in a string literal you need one more round of escaping
; มีข้อมูลพื้นฐานเกี่ยวกับ (เหตุผล) นี้หรือไม่?
ด้วย ES2015 (aka ES6) คุณสามารถใช้ตัวอักษรเทมเพลตเมื่อสร้างRegExp :
let test = '53'
const regexp = new RegExp(`\\b${test}\\b`, 'gi') // showing how to pass optional flags
console.log('51, 52, 53, 54'.match(regexp))
คุณสามารถใช้ได้
/(^|,)52(,|$)/.test('51,52,53')
แต่ฉันแนะนำให้ใช้
var list = '51,52,53';
function test2(list, test){
return !((","+list+",").indexOf(","+test+",") === -1)
}
alert( test2(list,52) )
new
มีหลายสถานที่ที่ตัวสร้างฟังก์ชั่นของในตัวชนิดอาจนำมาใช้ทั้งที่มีหรือไม่มี อย่างไรก็ตามสำหรับความสอดคล้องกับวัตถุอื่น ๆnew
ที่นี้อาจไม่ถือเป็นจริงและความชัดเจนในการทั่วไปผมมักจะใช้