在javascript中将字符串变量转换为正则表达式?

时间:2011-04-28 11:24:39

标签: javascript regex

所以我试图在字符串中搜索子字符串,显然,我必须使用.search函数的正则表达式,这是我的代码

var str = items[i].toLowerCase;
var str2 = document.getElementById("input").value.toLowerCase;

var index = str.search(str2);

猥亵这不起作用我得到一个错误,说str.search不是一个函数,我如何将这两个字符串更改为正则表达式?

感谢

4 个答案:

答案 0 :(得分:2)

使用此:

new RegExp("your regex here", "modifiers");

看看: Using a string variable as regular expression

答案 1 :(得分:0)

为函数调用添加大括号:

var str = items[i].toLowerCase();
var str2 = document.getElementById("input").value.toLowerCase();
var index = str.search(str2);

否则“str”的类型是函数,而不是函数执行的结果

答案 2 :(得分:0)

你的问题是忘记了一组括号() - 因此str和str2被分配了一个函数,而不是调用该函数的结果!只需更改代码:

var str = items[i].toLowerCase();
var str2 = document.getElementById("input").value.toLowerCase();

var index = str.search(str2);

答案 3 :(得分:0)

在RegExp构造函数中使用表达式:

var re = new RegExp(str, 'g');

将创建一个正则表达式以匹配字符串中str的值,因此:

var str = 'foo';
var re = new RegExp(str, 'i');

相当于RegExp文字:

var re = /foo/i;

您可以使用任何计算结果为有效正则表达式的表达式,以便在字符串开头匹配foo:

var re = new RegExp('^' + str, 'i');

唯一的问题是引用的字符必须是双引号,所以要匹配字符串末尾的空格:

var re = new RegExp('\\s+$');

相当于:

var re = /\s+$/;