Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为突出显示函数(js-regexp)转义字符串时出错_Javascript_Regex - Fatal编程技术网

Javascript 为突出显示函数(js-regexp)转义字符串时出错

Javascript 为突出显示函数(js-regexp)转义字符串时出错,javascript,regex,Javascript,Regex,我正在尝试实现一个突出显示功能,以下是我到目前为止所做的 function highlight(value, term){ return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/i, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "i")

我正在尝试实现一个突出显示功能,以下是我到目前为止所做的

function highlight(value, term){
    return value.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + 
      term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/i, "\\$1") + ")(?![^<>]*>)(?![^&;]+;)", "i"), "<strong>$1</strong>")
  }

尽管我查看了我的代码,但我似乎无法找到错误所在。你能帮我指出吗??或者有更简单的方法来实现这一点吗?

您的
术语。replace
代码只替换找到的任何术语的第一个实例。您需要在正则表达式的末尾使用
g
。也不需要捕获,因为您可以只使用表达式本身(我已经删除了一些不必要的转义):


这里有一个更完整的版本:

我认为应该使用双反斜杠(\\而不是\)。term.replace(/([\\\\\\\\\$(\)\[\]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\;省略了gintentional@WataTakaheshi这是为什么呢?同样,这并没有解决问题,因为按照您所说的操作并调用highlight('abc(d)','abc(')返回'abc(d)'而不是'abc(d)'
term.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/i, "\\$1") 
term.replace(/[\^$()[\]{}*.+?|\\\\]/g, "\\$&")