我正在使用搜索引擎的函数匹配,因此每当用户键入搜索字符串时,我会使用该字符串并在包含国家/地区名称的数组上使用匹配函数,但它似乎不起作用。
例如,如果我这样做:
var string = "algeria";
var res = string.match(/alge/g); //alge is what the user would have typed in the search bar
alert(res);
我得到一个字符串res = "alge"
://从而验证阿尔及利亚存在alge
但如果我这样做,它会返回null,为什么?我怎样才能让它发挥作用?
var regex = "/alge/g";
var string = "algeria";
var res = string.match(regex);
alert(res);
答案 0 :(得分:3)
要从字符串生成正则表达式,您需要创建一个RegExp对象:
var regex = new RegExp("alge", "g");
(请注意,除非您的用户输入实际的正则表达式,否则您需要转义在正则表达式中具有特殊含义的任何字符 - 请参阅Is there a RegExp.escape function in Javascript?了解如何执行此操作。)
答案 1 :(得分:0)
你不需要围绕正则表达式引用:
var regex = /alge/g;
答案 2 :(得分:0)
删除正则表达式周围的引号。
var regex = /alge/g;
var string = "algeria";
var res = string.match(regex);
alert(res);
答案 3 :(得分:0)
找到答案,匹配函数需要一个正则表达式对象,所以必须这样做
var regex = new RegExp(string, "g");
var res = text.match(regex);
这很好用