关于javascript:将字符串转换为正则表达式

Convert a string into a regular expression

本问题已经有最佳答案,请猛点这里访问。

我正在使用一个非常精细的JavaScript库,名为"数组查询",由Jacob Wright在对象数组中进行搜索。

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

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

有人告诉我

You are putting quotes around your regex, making it a string. Remove the quotes.

因此

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

工作良好。

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

如何将"z"的输入文本框值转换成var reg = z;的形式?非常感谢您的帮助或想法,希望这不会太令人困惑。


你应该做

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

基本上你可以想到

1
var regex = /pattern/modifiers;

作为

1
var regex = new RegExp(pattern,modifiers);

在MDN或W3Schools上阅读更多关于它的信息


1
var reg = new RegExp("string");


你可以这样做:

1
2
3
4
5
var string = $('#input_id').val();
string = string.replace('/', '');

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