正则表达式,替换正确的大写版本的关键字

问题描述:

我有一个简单的文本,当点击按钮时,我突出显示一个特定的关键字。正则表达式,替换正确的大写版本的关键字

<p id="mytext">Lorem ipsum dolor sit amet, consectetur.</p> 

当我想强调consectetur键入Consectetur,它突出但利用它。

但是最初,它不是大写的单词。

我们该如何解决?

JSFIDDLE

var mytext = document.getElementById("mytext"); 
 
var btn = document.getElementById("btn"); 
 

 
var word = "Consectetur"; 
 

 
btn.addEventListener("click", function() { 
 

 
    mytext.innerHTML = mytext.innerHTML.replace(new RegExp(word, 'gi'), '<span class="h">' + word + '</span>') 
 

 
}, false);
.h { 
 
    background: yellow; 
 
}
<p id="mytext">Lorem ipsum dolor sit amet, consectetur.</p> 
 
<button id="btn">Click</button>

+0

不要在替换中使用'word',而是使用反向引用。 –

+0

使用捕获组... – brso05

+0

捕获组? @ brso05 – Norx

var mytext = document.getElementById("mytext"); 
 
var btn = document.getElementById("btn"); 
 

 
var word = /Consectetur/gi; 
 

 
btn.addEventListener("click", function() { 
 

 
    mytext.innerHTML = mytext.innerHTML.replace(word, '<span class="h">$&</span>') 
 

 
}, false);
.h { 
 
    background: yellow; 
 
}
<p id="mytext">Lorem ipsum dolor sit amet, consectetur.</p> 
 
<button id="btn">Click</button>

+1

你甚至不需要创建一个捕获,你可以使用'$&'来引用整个匹配。 –

+0

@CasimiretHippolyte:你说得对,编辑相应。 – Toto

使用捕获组,然后与所匹配的值替换。 $1引用了第一个(也是唯一)捕获的组。

mytext.innerHTML.replace(new RegExp("(" + word + ")", 'gi'), '<span class="h">$1</span>') 

var mytext = document.getElementById("mytext"); 
 
var btn = document.getElementById("btn"); 
 

 
var word = "Consectetur"; 
 

 
btn.addEventListener("click", function() { 
 

 
    mytext.innerHTML = mytext.innerHTML.replace(new RegExp("(" + word + ")", 'gi'), '<span class="h">$1</span>') 
 

 
}, false);
.h { 
 
    background: yellow; 
 
}
<p id="mytext">Lorem ipsum dolor sit amet, consectetur.</p> 
 
<button id="btn">Click</button>

让你当前的代码只是追加.toLowerCase()word

即:

word.toLowerCase() 

var mytext = document.getElementById("mytext"); 
 
var btn = document.getElementById("btn"); 
 

 
var word = "Consectetur"; 
 

 
btn.addEventListener("click", function() { 
 

 
    mytext.innerHTML = mytext.innerHTML.replace(new RegExp(word, 'gi'), '<span class="h">' + word.toLowerCase() + '</span>') 
 

 
}, false);
.h { 
 
    background: yellow; 
 
}
<p id="mytext">Lorem ipsum dolor sit amet, consectetur.</p> 
 
<button id="btn">Click</button>

+1

这只适用于这种情况,如果他与Consectetur相匹配,那么它应该是较低的 –