javascript indexOf / replace多个搜索词

时间:2013-08-06 12:44:21

标签: javascript regex

假设我有以下文字:

var text = "aaa bbb eee ccc <br>ddd eee fff ggg hhh iii jjj kkk";

搜索字词是:

var search = "eee ggg";

我想知道以下其中一项(相当于):

a)要么通过(最好)知道正则表达式找到搜索词的文本中的位置(indexOf)。在这种情况下,indexOf()应返回20.(请注意,在 eee fff ggg *

之前,还有一个 eee

OR

b)能够将找到的术语 eee fff ggg 替换为 newinsertedstring eee fff ggg

提前致谢

编辑文本变量中有一些 br 分割行,因此它应该只在包含所有搜索词的行中找到/替换它。 / p>

3 个答案:

答案 0 :(得分:1)

我认为这样做会:

var text = "aaa bbb eee ccc <br>ddd eee fff ggg hhh iii jjj kkk";
var search = /eee [^e<>]*ggg/g;

console.log(text.search(search)); // a)
console.log(text.replace(search, "newinsertedstring $&")); // b)

答案 1 :(得分:1)

  

我想找到包含eee AND ggg的模式的行

这是一个不同的问题,但没问题。

var text = "aaa bbb eee ccc <br>ddd eee fff ggg hhh iii jjj kkk",
    search = "eee ggg";

var lines = text.split("<br>"),
    terms = search.split(" "),
    firstOccurence = new RegExp(terms.join("|"));
function containedIn(l){
    return function(t) { return l.indexOf(t) > -1; }
}

for (var i=0; i<lines.length; i++)
    if (terms.every(containedIn(lines[i]))
        lines[i] = lines[i].replace(firstOccurence, "newinsertedString $&");
var result = lines.join("<br>");

答案 2 :(得分:0)

var text = "whatever".Replace("eee fff ggg", "newinsertedstring eee fff ggg");