如何使用javascript replace()函数替换多个单词
how to replace multiple words using javascript replace() function?
下面是我的代码:
var keys = keyword.split(' ');
//alert(keys);
for(var i=0; i<keys.length; i++)
{
var re = new RegExp(keys[i], "gi");
var NewString = oldvar.replace(re, '<span style="background-color:#FFFF00">'+keys[i]+'</span>');
document.getElementById("wordlist").innerHTML=NewString;
alert(keys[i]);
}
但是这里如果我放一个字符串"a b";它分为两个字母"a"answers"b"这个替换函数替换了a但是当它得到b的时候它会覆盖并且只替换b。但我想突出a和b。如何解决这个问题?我还有一个问题。如果我替换/突出显示它,那么它会替换HTML标签的所有"a"answers"b"。那么,如何防止替换那些HTML标签呢?而且当我显示整个文本时我需要所有的html标签
您实际上可以像这样做单个正则表达式替换:
var re = new RegExp(keys.join("|"), "gi");
oldvar = oldvar.replace(re, replacer);
document.getElementById("wordlist").innerHTML = oldvar;
function replacer(str)
{
return '<span style="background-color:#FFFF00">' + str + '</span>';
}
示例- http://jsfiddle.net/zEXrq/1/
它所做的是将所有键合并成一个由|
分隔的单个regex,该regex将匹配所有单词,然后在匹配上运行替换函数。
例子2 - http://jsfiddle.net/zEXrq/2/
var keys = keyword.split(' ');
//alert(keys);
for(var i=0; i<keys.length; i++)
{
var re = new RegExp(keys[i], "gi");
oldvar = oldvar.replace(re, '<span style="background-color:#FFFF00">'+keys[i]+'</span>');
document.getElementById("wordlist").innerHTML=oldvar;
alert(keys[i]);
}
编辑:很明显,在循环过程中oldvar没有改变,总是只应用最后一个replace。你必须改变"oldvar"来替换所有的
应该在同一个变量上执行操作,将oldvar移出循环,但从不将更改的内容放入oldvar。因此,最后一次迭代(仅)是替换内容的迭代。
在每次迭代中对变量oldvar
(在此代码段中未声明)调用replace
,因此每次都从同一点(未突出显示的字符串)开始。没有看到所有的代码,我想,简单地替换var NewString =
与oldvar =
和.innerHTML=NewString
.innerHTML=oldvar
将解决您的问题。
相关文章:
- JavaScript Regex 将单词替换为其第一个字母,除非在括号内
- 如何替换数据属性中的特定字符串单词
- 替换与单词'匹配的文本字符;购物车'替换为img图标
- Javascript/jQuery替换tamil语言输入框中的最后一个单词
- 用特定的javascript正则表达式替换每个单词
- 查找并替换多个单词 JavaScript
- 如何使用正则表达式 JavaScript 替换具有特定单词的整行
- 查找单词的一部分,但替换整个单词
- JavaScript-遍历数组并替换页面上的单词
- 我想使用replace函数扫描json对象,然后用字符串替换匹配的单词
- JavaScript无法用相同单词的数量替换字符串
- Regex,替换所有以@开头的单词
- 根据Javascript中的模式替换单词
- 使用javascript替换单词
- 如果单词末尾没有“s”,请替换单词末尾的“s”
- 当用户输入时替换单词(JS)
- 用表单(Javascript)替换单词
- 在javascript中查找并替换单词
- 根据正则表达式搜索结果替换单词
- 用JavaScript动态替换单词