我正在尝试实现突出显示功能,这是我到目前为止所拥有的
function highlight(value, term){
return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" +
term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/i, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "i"), "<strong>$1</strong>")
}
在大多数情况下它可以工作,但是当术语包含')'并且引发此错误时代码会中断:SyntaxError: unmatched ) in regular expression。似乎 ')' 没有通过以下方式转义:
term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/i, "\\$1")
但是,尽管我查看了该代码,但似乎找不到错误所在。能帮忙指点一下吗??或者有没有更简单的方法来实现这一点?