gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 20:55:06 25 4
gpt4 key购买 nike

如果我在 "" 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com