1

假设我有以下文字:

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

或者

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

提前致谢

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

4

3 回答 3

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)
于 2013-08-06T12:50:36.060 回答
1

我想找到包含eee和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>");
于 2013-08-06T13:03:26.687 回答
0
var text = "whatever".Replace("eee fff ggg", "newinsertedstring eee fff ggg");
于 2013-08-06T12:48:48.423 回答