Javascript - 根据数组替换字符串

标签 javascript arrays regex

我有

mystring = "Google"我有数组

myarray = ["o", "o", "e"]

我想做类似的事情

mystring.replace(myarray, "<b>$</b>") 

所以它会返回 G<b>o</b><b>o</b>gl<b>e</b> - 来自数组的每个匹配字母都包含在标签中。

我也有合适的正则表达式 /.*?(o).*?(o).*(e).*/i具有 o 后跟 o 后跟 e 的匹配组。

那些数组和字符串是自动生成的(模糊搜索)所以我不能说数组和字符串有多大。我只知道要在字符串中查找的字母。

最佳答案

你可以这样做:

mystring =  "Google";
myarray = ["o", "o", "e"];

var r = mystring.replace(new RegExp( '(' + myarray.join('|') + ')', 'g'), "<b>$1</b>");
//=> G<b>o</b><b>o</b>gl<b>e</b>

编辑:基于以下讨论:

mystring =  "Google";
myarray = ["g", "o", "e"];

var r = mystring;
for (var i in myarray) {
    r = r.replace(new RegExp('('+myarray[i]+')(?!<\\/b>)', "i"), "<b>$1</b>");
}
console.log(r); // <b>G</b><b>o</b>ogl<b>e</b>

PS:由于使用了negative lookahead (?!<\/b>)同一个字母不会被替换两次。

JSFiddle

关于Javascript - 根据数组替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450609/

相关文章:

python - 使用两个不同的间距值在 Python 中创建数组

python - 如何在 Django 模板中使用变量作为索引?

c# - 替换动态字符串中的部分文本

c++ - Boost.Regex 扩展正则表达式中的非贪婪匹配

javascript - jquery动画页面打桩

javascript - 在页面重新加载中使用 $locationProvider 不起作用

c - 指向整数数组的指针的标量初始值设定项的多余元素

javascript - 尝试通过下拉菜单使用 Bootstrap

javascript - 在此正则表达式中允许 aphrerates

python - 正则表达式捕获所有导入语句