有一个输入,当你输入一个在文本中多次出现的单词或字母时,这些重复的部分会用mark标签突出显示。我使用正则表达式找到相同的单词,然后使用 Replace() 方法替换它们。但是,在这种情况下,所有字母都会变小,因为输入中的字母已被替换。因此,所有重复的大写字母(或以大写字母开头的相同单词)将被替换为相同的字母,但小写。如何确保替换后字母的大小写与原始大小写相对应?
const text = document.querySelector('.text');
const input = document.querySelector('.input');
input.addEventListener('input', () => {
let value = input.value
words(text, value)
})
function words(text, search) {
let words = text.textContent
if (words.indexOf(`${search}`) != -1 && search != '' && search != ' ') {
let searchAll = new RegExp(search, 'gi')
let newText = words.replace(searchAll, '<mark>' + search + '</mark>')
text.innerHTML = newText
} else {
console.log('did not find');
}
}
为什么
indexOf,当有test?我觉得这个地方有问题。