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

时间:2013-06-13 07:45:53

标签: javascript string textinput

我正在使用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;的表单? 非常感谢任何帮助或想法,希望这不会太混乱。

3 个答案:

答案 0 :(得分:4)

你应该做

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

基本上你可以想到

var regex = /pattern/modifiers;

作为

var regex = new RegExp(pattern,modifiers);

MDNw3schools

了解详情

答案 1 :(得分:2)

var reg = new RegExp("string");

答案 2 :(得分:-3)

您可以这样做:

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

var regexpPattern = '/'+string+'/';
regex(regexpPattern);