Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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/4/regex/16.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/9/three.js/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';i';全球经济也行不通_Javascript_Regex_String_Regexp Replace - Fatal编程技术网

带有不区分大小写标志的正则表达式javascript';i';全球经济也行不通

带有不区分大小写标志的正则表达式javascript';i';全球经济也行不通,javascript,regex,string,regexp-replace,Javascript,Regex,String,Regexp Replace,我正在研究一种方法来突出显示在字符串中找到的查询文本,其思想是在找到的每个事件中添加粗体标记。问题是,当我尝试用g替换所有出现的查询文本时,如果i标志不起作用,它看起来会忽略i标志 这就是功能: highlight = function(text,q){ if (text.indexOf(q) != -1) { text = text.replace(new RegExp("\\b".concat(q, "\\b"), 'gi'), '<b>

我正在研究一种方法来突出显示在字符串中找到的查询文本,其思想是在找到的每个事件中添加粗体标记。问题是,当我尝试用g替换所有出现的查询文本时,如果i标志不起作用,它看起来会忽略i标志

这就是功能:

highlight  =  function(text,q){
        if (text.indexOf(q) != -1) {
            text = text.replace(new RegExp("\\b".concat(q, "\\b"), 'gi'), '<b>' + q + '</b>');
          } else{
            q = q.split(' ');
            q.forEach(function (item) {
              if (text.indexOf(item) != -1) text = text.replace(new RegExp("\\b".concat(item, "\\b"), 'gi'), '<b>' + item + '</b>');
            });
          }
             return text;
    }
highlight=函数(文本,q){
if(text.indexOf(q)!=-1){
text=text.replace(新的RegExp(“\\b”.concat(q,“\\b”),“gi”),“+q+”;
}否则{
q=q.分割(“”);
q、 forEach(功能(项目){
如果(text.indexOf(item)!=-1)text=text.replace(新的RegExp(“\\b”.concat(item,“\\b”),“gi”),“+item+”;
});
}
返回文本;
}
请随意测试,下面是我测试的两个示例:

突出显示('is THIS','THIS')=>这是这吗
有效


突出显示('is THIS','THIS')=>is THIS

试试这样的方法:

highlight = function(text, q) {
  return text.replace(new RegExp("\\b" + q + "\\b", 'gi'),
                      function(x) {
                        return '<b>' + x + '</b>';
                      });
}
highlight=函数(文本,q){
返回文本。替换(新的RegExp(“\\b”+q+“\\b”,'gi'),
功能(x){
返回“+x+”;
});
}

是否
indexOf()
不区分大小写?除此之外,您还有另一个问题,
转换为
是的,该问题现在未解决,但如果您有解决方案,请让我现在感谢它工作正常,谢谢,它不会用此取代此。