javascript - 正则表达式模式突出显示双引号内的字符串单词

标签 javascript regex

如果我有单词 "" DOUBLE QUOTES var WordsToHighlight =' "word1, word2"' 表示整体突出显示 word1 word2,我想添加一个条件文本

exp var WordsToHighlight = ' "a reference, server"' 表示在整个文本中突出显示a reference server

我的问题需要突出显示整个文本中双引号内的文本

说明:

  • * 是一个 chop ,效果很好

  • ? 突出显示单词+ n 个字符

  • .split(/"([^"]+)"|\s+/).filter( bool 值)

    推送时会用双引号子字符串分割字符串 将双引号之间的子字符串放入结果数组中 (String#split 总是将捕获的子字符串插入 结果数组),并且有 1+ 空格和 .filter(Boolean) 将 删除拆分操作期间可能产生的空项。

var row = {
  "Abstract": "I have a reference server for reference and just a server here server test." 
};

var wordsToHighlight = ' "a reference, server" jus? fo* ';
var result = row["Abstract"];
wordsToHighlight.split(/"([^"]+)"|\s+/).filter(Boolean).forEach(function (word) {
word = word.replace(/\*/g, '\\S*').replace(/\?/g, '.').replace(/\"/g, '.');
result = result.replace(new RegExp('(\\s|^)(' + word + ')(?=\\s|$)', "gi"),'$1<span style="background-color:yellow;">$2</span>');
});
document.querySelector("#result").innerHTML = result;
<div id="result"></div>

我期望的结果:

enter image description here

最佳答案

您需要以更复杂的方式解析要突出显示的单词:拆分双引号字符串和非空白 block 。后者可以按原样添加到结果数组中,但双引号中的内容应使用逗号(以及任何封闭的空格)分隔。

var row = {
  "Abstract": "I have a reference server for reference and just a server here server test." 
};

var wordsToHighlight = ' "a reference, server" jus? fo* ';
var result = row["Abstract"];
var wordsTH2=[], m;
var rx = /"([^"]+)"|\S+/g;
while (m=rx.exec(wordsToHighlight)) {
  if (m[1]) {
     var arr = m[1].split(/\s*,\s*/);
     for (var i=0; i<arr.length;i++) {
        wordsTH2.push(arr[i]);
     }
  } else {
    wordsTH2.push(m[0]);
  }
}
wordsTH2.forEach(function (word) {
word = word.replace(/\*/g, '\\S*').replace(/\?/g, '.').replace(/\"/g, '.');
result = result.replace(new RegExp('(\\s|^)(' + word + ')(?=\\s|$)', "gi"),'$1<span style="background-color:yellow;">$2</span>');
});
document.querySelector("#result").innerHTML = result;
<div id="result"></div>

关于javascript - 正则表达式模式突出显示双引号内的字符串单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49753081/

相关文章:

javascript - 将消息集中在 Extjs 的属性文件中

javascript - 如何从错误处理程序分派(dispatch)操作并立即中断 redux-observable 中 Observable 链的其余部分?

正则表达式捕获组帮助netsuite/oracle

java - 合并两个正则表达式

python - 基于不同模式(在单个表达式中)拆分文本的正则表达式

javascript - 从JS变量构建正则表达式不起作用

javascript - AJAX 调用中的对象仅在客户端服务器上未定义

javascript - 检查各个 div 的文本并更改内容

javascript - 从子对象访问父对象

javascript - 正则表达式匹配 JavaScript 中某些字符中未包含的字符串?