5

我正在使用 Jacob Wright 的名为“array-query”的非常精细的 JavaScript 库在对象数组中进行搜索。

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

var reg = "/[^\w\s]/"; 
regex(reg);

有人告诉我

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

因此

var reg = /[^\w\s]/; 
regex(reg);

工作正常。

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

如何将输入文本框值"z"转换为表单var reg = z;?非常感谢您的任何帮助或想法,希望这不会太混乱。

4

3 回答 3

4

你应该做

var regex = new RegExp('your regex string');

基本上你可以想到

var regex = /pattern/modifiers;

作为

var regex = new RegExp(pattern,modifiers);

阅读更多关于它的信息:MDNw3schools

于 2013-06-13T07:57:42.240 回答
2
var reg = new RegExp("string");
于 2013-06-13T07:59:52.460 回答
-3

你可以这样做:

var string = $('#input_id').val();
string = string.replace('/', '');

var regexpPattern = '/'+string+'/';
regex(regexpPattern);
于 2013-06-13T08:03:44.880 回答