正则表达式,替换正确的大写版本的关键字
我有一个简单的文本,当点击按钮时,我突出显示一个特定的关键字。正则表达式,替换正确的大写版本的关键字
<p id="mytext">Lorem ipsum dolor sit amet, consectetur.</p>
当我想强调consectetur和键入Consectetur,它突出但利用它。
但是最初,它不是大写的单词。
我们该如何解决?
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>
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>
你甚至不需要创建一个捕获,你可以使用'$&'来引用整个匹配。 –
@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>
这只适用于这种情况,如果他与Consectetur相匹配,那么它应该是较低的 –
不要在替换中使用'word',而是使用反向引用。 –
使用捕获组... – brso05
捕获组? @ brso05 – Norx