JavaScript正则表达式模式中的变量有一个怪异的问题

Lia*_*eng 2 javascript

我想输入一个数字来查找,因此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);
Run Code Online (Sandbox Code Playgroud)

根据示例,我期望的是:

 (50-20-3) Fant
Run Code Online (Sandbox Code Playgroud)

但是,我实际上得到了这个:

70] (50-20-3) Fant
Run Code Online (Sandbox Code Playgroud)

Nin*_*olz 5

您需要用括号将引号引起来,因为该字符串不是正则表达式,并且通过将其转换为正则表达式,第一个带引号的qoute会转换为引号,并用引号引起来。

value    type
-----    ------------------
'\\['    string
/\[/     regular expression
Run Code Online (Sandbox Code Playgroud)

正则表达式中的方括号表示字符类。

value    type
-----    ------------------
'\\['    string
/\[/     regular expression
Run Code Online (Sandbox Code Playgroud)