2016-12-04 43 views
0

我在正则表达式结果中插入字符时遇到问题。我需要做一些这样的:在javascript中插入正则表达式结果的开始和结束字符

var str = "Hello world, hello"; 
var regX = /he/ig; 

结果已经是这样的字符串:

console.log(result); 
<mark>He</mark>llo world, <mark>he</mark>llo" 

我尝试使用此代码:

r = /he/ig; 
str = "Hello world Hello"; 
var match, indexes = []; 
while (match= r.exec(str)){ 
    indexes.push([match.index, match.index+match[0].length]); 
} 

indexes.forEach((element) => { 
    var strStart = str.substring(0,element[0]); 
    var strBetween = "<mark>"+str.substring(element[0],element[1])+"</mark>"; 
    var strEnd = str.substring(element[1],str.length); 
    str = strStart.concat(strBetween,strEnd); 
}); 

console.log(str); //<mark>He</mark>llo worl<mark>d </mark>Hello     

我明白的地方是错误,但我不知道如何解决这个问题。

+0

为什么'd'字符在末尾用''包裹? – RomanPerekhrest

回答

0

您可以用.replace()方法做到这一点:

var str = "Hello world hello"; 
var result = str.replace(/he/ig, "<mark>$&</mark>"); 

替换字符串的$&意味着匹配的文本应该被替换。

相关问题