2017-04-13 20 views
4

我試圖在RegEx中放置一個模板文字,但它不起作用。然後,我做了一個變量regex,它包含我的RegEx,但它仍然沒有給我想要的結果。RegEx中的模板文字

但是如果我console.log(regex)單獨,我這樣做對收到理想的正則表達式,如/.+?(?=location)/i/.+?(?=date)/i和,但一旦我把regex.replace裏面似乎並不奏效

function validate (data) { 
    let testArr = Object.keys(data); 
    errorMessages.forEach((elem, i) => { 
    const regex = `/.+?(?=${elem.value})/i`; 
    const a = testArr[i].replace(regex, ''); 
    }) 
    } 

回答

5

regex變量是字符串。爲了使一個RegExp,使用

const regex = new RegExp(`.+?(?=${elemvalue.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')})`, "i"); 

而且,這是一個好主意,在正則表達式escape the variable一部分,所以所有特殊的正則表達式中的元字符作爲文字處理。

const s = "final (location)"; 
 
const elemvalue = "(location)"; 
 
const regex = new RegExp(`.+?(?=${elemvalue.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')})`, "i"); 
 
// console.log(regex); // /.+?(?=\(location\))/i 
 
// console.log(typeof(regex)); // object 
 
let a = s.replace(regex, ''); 
 
console.log(a);