我正在尝试匹配字符串的一部分,它应该不区分大小写。我有以下代码,但我从来没有得到替换的字符串。
var name = 'Mohammad Azam'
var result = name.replace('/' + searchText + '/gi', "<b>" + searchText + "</b>");
searchText变量将是“moha”或“mo”或“moh”。
如何以粗体标签获取匹配的内容。
答案 0 :(得分:22)
/ pattern /有意义,而不是像你那样构造字符串。 (我不是百分百肯定的。)
尝试
var name = 'Mohammad Azam';
var searchText = 'moha';
var result = name.replace(new RegExp('(' + searchText + ')', 'gi'), "<b>$1</b>");
//result is <b>Moha</b>mmad Azam
编辑:
添加了上述代码的演示页面。
答案 1 :(得分:3)
我认为你正在寻找新的RegExp,它创建了一个动态的正则表达式 - 你现在要做的就是匹配一个字符串(而不是正则表达式对象):
var name = 'Mohammad Azam', searchText='moha';
var result = name.replace(new RegExp(searchText, 'gi'), "" + searchText + ""); result
编辑:实际上,这可能就是你在寻找的,没关系^
var name = 'Mohammad Azam', searchText='moha';
name.match( new RegExp( searchText , 'gi' ) )[0]
name // "Moha"