将字符串转换为正则表达式

use*_*168 5 javascript string textinput

我正在使用Jacob Wright 编写的一个名为"array-query"的非常精细的JavaScript库来进行对象数组的搜索.

一种方法是regex()将正则表达式包含在括号中,如下所示:regex(/[^\w\s]/).如果我硬编码表达式,因为我刚才显示它工作正常.如果我先在变量中放入相同的表达式,它就不起作用,如下所示:

var reg = "/[^\w\s]/"; 
regex(reg);
Run Code Online (Sandbox Code Playgroud)

有人告诉我

你在你的正则表达式周围加上引号,使它成为一个字符串.删除引号.

从而

var reg = /[^\w\s]/; 
regex(reg);
Run Code Online (Sandbox Code Playgroud)

工作良好.

问题是我需要接受来自文本框的用户输入作为正则表达式的一部分.例如,如果用户输入字母,z则需要将其更改为/z/.即使我输入/z/textbox.value返回也有同样的问题var reg = "/z/".如果我硬编码var reg = /z/; regex(reg);它工作正常.

如何将输入文本框值设置"z"为一个表单var reg = z;?非常感谢任何帮助或想法,希望这不是太混乱.

Mat*_*yas 4

你应该做

var regex = new RegExp('your regex string');
Run Code Online (Sandbox Code Playgroud)

基本上你可以想到

var regex = /pattern/modifiers;
Run Code Online (Sandbox Code Playgroud)

作为

var regex = new RegExp(pattern,modifiers);
Run Code Online (Sandbox Code Playgroud)

欲了解更多相关信息,请访问:MDNw3schools