gpt4 book ai didi

javascript - 替换子字符串,但如果在标签之间或在带有 javascript 的标签中则不替换

转载 作者:行者123 更新时间:2023-11-30 18:27:05 25 4
gpt4 key购买 nike

所以我在这里写了这段代码:

highlighter: function (item) {
var parts = this.query.split(" ");
var length = parts.length;
for (var i = 0; i < length; i++){
if(parts[i] != ""){
item = item.replace(new RegExp('(' + parts[i] + ')', 'ig'), function ($1, match) {
return '<strong>' + match + '</strong>'
})
}
}

return item;
}

它的作用是:

  • 我有字符串 item , 和字符串 this.query
  • 我拆分this.query在每个空格处,并将生成的子字符串放入 parts[]

我的目标是使每个出现的子字符串都来自 parts[]item粗体。

如果

item = "This is some text"

this.query = "This some"

我要<strong>This</strong> is <strong>some</strong> text .

这非常有效,除非我在 <strong> 中得到匹配项元素本身。所以我只想替换不在 strong 中的匹配项标记自己。因为我用 ong> 得到结果字符串或 trong>在里面。这可能吗?

最佳答案

如果你想避免强标签,一步完成替换:

item = item.replace(
new RegExp(parts.join('|'), 'ig'),
function (match) {
return '<strong>' + match + '</strong>'
}
)

如果在开始之前“item”包含 strong ,你仍然会遇到问题,否则你不会遇到问题。

编辑:

假设您要匹配“this”、“that”和“the other”。 正则表达式RegExpThis|some|the other。奇怪的是,传递给 new RegExp 的字符串被解析为正则表达式。

另一个需要注意的重要事项是 item.replace(regex, callback) 将用调用 callback(match) 的结果替换它找到的 every 匹配, ...) 每一个。传递给回调的第一个参数是正则表达式的整个匹配项,而其余参数是匹配项中的组。

如果您想了解更多,请阅读正则表达式。

关于javascript - 替换子字符串,但如果在标签之间或在带有 javascript 的标签中则不替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10572541/

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