Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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/1/list/4.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 将可能以特殊字符开头或结尾且具有通用前缀的搜索短语包装为仅带有SPAN标记的整词_Javascript_Regex - Fatal编程技术网

Javascript 将可能以特殊字符开头或结尾且具有通用前缀的搜索短语包装为仅带有SPAN标记的整词

Javascript 将可能以特殊字符开头或结尾且具有通用前缀的搜索短语包装为仅带有SPAN标记的整词,javascript,regex,Javascript,Regex,我有这段代码来突出显示数组中存在的单词,除了没有突出显示包含“.”的单词外,一切正常 spansR[i].innerHTML = t[i].replace(new RegExp(wordsArray.join("|"),'gi'), function(c) { return '<span style="color:red">'+c+'</span>'; }); spansR[i].innerHTML=t[i].re

我有这段代码来突出显示数组中存在的单词,除了没有突出显示包含“.”的单词外,一切正常

spansR[i].innerHTML = t[i].replace(new RegExp(wordsArray.join("|"),'gi'), function(c) {
                return '<span style="color:red">'+c+'</span>';
            });
spansR[i].innerHTML=t[i].replace(新RegExp(wordsArray.join(“|”)函数(c){
返回“+c+”;
});
我还试着在每个单词中避开圆点

 for(var r=0;r<wordsArray.length;r++){
               if(wordsArray[r].includes('.')){
                 wordsArray[r] = wordsArray[r].replace(".", "\\.");
                  wordsArray[r] = '\\b'+wordsArray[r]+'\\b';
              }
           }
for(var r=0;r以下是您的解决方案:

替换此项:

new RegExp(wordsArray.join("|"),'gi')
为此:

new RegExp(wordsArray.join("|"),'gi').replace(/\./g,'\\.')
例如:

['javascript', 'firas.', 'regexp'].join("|").replace(/\./g,'\\.')
将打印

javascript|firas\.|regexp

这是您正在寻找的带有转义点的正则表达式。它将匹配
firas.
,但不会匹配
firas
,正如您在上一条评论中特别要求的那样

在JavaScript中实现一个明确的单词边界

以下是不支持ECMAScript 2018及更新版本的JS版本:

var t=“一些文本…firas和firas。但不是firas…还有一些购物而不是购物”;
var wordsArray=['firas','firas.','shop'];
排序(函数(a,b){
返回b.length-a.length;
});
var regex=new RegExp(“(^ |\\W)(“+wordsArray.map(函数(x)){
返回x.replace(/[-\/\^$*+.()\[\]{}]/g,'\\$&'))
}).join(“|”)+”(!\\w)”,“gi”);

console.log(t.replace(regex,$1$2'));
请提供一个测试用例来重新处理这个问题。顺便说一句,
t[i].replace(new RegExp(wordsArray.join(“|”)join(“|”)gi'),function(c){return“”+c+”;
应该重新编写为
t[i]。replace(new RegExp
WiktorStribiżew:是的,没有函数会更好,谢谢。mplungjan:抱歉,我不需要忽略“.”我想突出显示HTML分区中存在的wordsArray中的每个单词。因此如果wordsArray[r]是firas。我想突出显示每个“firas”。不突出显示“firas”,这就是为什么我不能删除“.”的原因。请参见
javascript|firas\.|regexp