Javascript 用于突出显示转义字符的正则表达式
我正在用JavaScript构建一个自动完成功能,在搜索时需要突出显示单词: 这很好,但是转义字符有问题。 尝试突出显示带有转义字符的文本(例如Javascript 用于突出显示转义字符的正则表达式,javascript,regex,Javascript,Regex,我正在用JavaScript构建一个自动完成功能,在搜索时需要突出显示单词: 这很好,但是转义字符有问题。 尝试突出显示带有转义字符的文本(例如regex&>
regex&>
)时,会发生以下情况:
这是因为我正在做以下工作:
element.innerHTML.replace(/a/g, highlight)
function highlight(str) {
return '<span class="foo"' + '>' + str + '</span>';
}
element.innerHTML.replace(/a/g,高亮显示)
功能突出显示(str){
返回“+str+”;
}
而innerHTML
包含单词&代码>,所以它是有意义的
总之,我需要一种方法来解决这个问题,所以我想要一个函数:
- 接收
a
和regex
示例
并返回regex br示例
- 接收
r
和regex
示例
并返回regex br示例
- receives
仅返回包含预期替换内容的新字符串。原始字符串保持不变
var str='replace me';
var str2=str.replace(/e/g,'e');
//仅供展示
document.write(“”+JSON.stringify({
str:str,
str2:str2
},空,2)+''
如果您不希望返回实体,请使用textContent
获取内容,并使用innerHTML
将其设置为包含的范围?textContent
已转义字符(即:&;
),例如,它只是排除了类似span
的html,这看起来像是另一个例子,你不能用正则表达式解析html。。。(除非您将单个字符/a/
作为一个完整的正则表达式进行计数,itemElem
是否填充了转义(未高亮显示)文本,然后高亮显示将尝试包含span
以高亮显示文本?或者函数将被赋予原始的未转义字符串,然后将突出显示的转义文本设置为itemElem
?感谢您的回答,但我看到了一个未涵盖的额外情况:我将问题更新为clarify@lante在这种情况下,您希望的输出是什么?“
”是否在输入中转义,是否需要在输出元素中转义?例如,条目可能包含html块,也可能不包含html块(我不能禁止用户将html块作为条目)搜索br
或&
@lante它需要是全局匹配还是只突出显示第一个匹配有效?全局匹配是自动完成的