假设我有以下文字:
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>
答案 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");