【发布时间】:2018-09-20 00:58:41
【问题描述】:
如果我在"" 内有单词,我想添加一个条件var wordsToHighlight =' "word1, word2" ' 表示在整个文本中突出显示word1 word2
exp var wordsToHighlight = ' "a reference, server" ' 表示在全文中突出显示a reference server
我的问题需要在整个文本中突出显示双引号内的文本
说明:
*被截断并且运行良好?高亮单词+ n 个字符-
.split(/"([^"]+)"|\s+/).filter(Boolean)它会在推送时用双引号子串分割字符串 双引号之间的子字符串到结果数组中 (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>
我预期的结果:
【问题讨论】:
-
看来你可以写
"a reference" server jus? fo*让它与当前代码一起工作。您对wordsToHighlight的内容有任何控制权吗?还是用户自定义?
标签: javascript regex