我想输入一个数字来查找,因此regexp模式必须是动态的,但是我遇到了一些奇怪的问题。
这是示例代码:
let list = `
[170] (50-20-3) Fant
[173] (50-20-3) Chi
[174] (50-20-3) Trib
[176] (50-20-3) Fant
[177] (50-20-3) Emo
[178] (50-20-3) Fa
`;
// In fact, this 'find' variable is origin by user input.
let find = 170;
let re = new RegExp("[" + find + "](.+)");
let found = list.match(re)[1];
document.write(found);
根据示例,我期望的是:
(50-20-3) Fant
但是,我实际上得到了:
70] (50-20-3) Fant
答案 0 :(得分:5)
您需要在括号中用引号引起来,因为该字符串不是正则表达式,并且通过将其转换为正则表达式,第一个带引号的qoute会转换为引号,并用括号将其引起来。
let list = ` [170] (50-20-3) Fant [173] (50-20-3) Chi [174] (50-20-3) Trib [176] (50-20-3) Fant [177] (50-20-3) Emo [178] (50-20-3) Fa `; let find = 170; let re = new RegExp("\\[" + find + "\\](.+)"); let found = list.match(re)[1]; console.log(found);
正则表达式中的方括号表示字符类。
{{1}}