所以我试图在字符串中搜索子字符串,显然,我必须使用.search函数的正则表达式,这是我的代码
var str = items[i].toLowerCase;
var str2 = document.getElementById("input").value.toLowerCase;
var index = str.search(str2);
猥亵这不起作用我得到一个错误,说str.search不是一个函数,我如何将这两个字符串更改为正则表达式?
感谢
答案 0 :(得分:2)
答案 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+$/;