我有一个插件,可在段落中查找缩写,如果找到缩写,则将其替换为文本和工具提示div。因此,当您将鼠标悬停在缩写上时,您会看到缩写的含义。
插件从如下所示的json文件中获取数据:
{
"abbreviations": [
{
"short": "AB",
"full": "Algemeen Bestuur"
},
{
"short":"AED",
"full":"Automatisch Externe Defibrillatoren"
},
{
"short": "AFAC",
"full": "Algemene Fiets Afhaal Centrale"
}
]
}
该插件通过ajax获取数据,然后在每个段落中查找“短”缩写。
$(data.abbriviations).each(function(index, value) {
let short = value.short;
let full = value.full;
let regex = new RegExp(short, "gi");
let replaceWith = "<span class='abbr' data-abbr='" + short + "'>" + short + "</span>";
$("p").each(function() {
$(this).html($(this).html().replace(regex, replaceWith));
});
$("[data-abbr='" + short + "']").append("<span class='tooltip'>" + full + "</span>");
});
变量“ regex”是RegExp,第一个参数是“ short”变量,它获取短文本。如果找到缩写,则将其替换为“ replaceWith”。
这有效,但与整个单词不匹配。例如,如果我有“ BBV”的缩写和“ BB”的缩写,它将“ BB”的完整测试放在“ BBV”中。
如果我用“ / \ b(bb | bbv)/ gi”更改.replace(),它将正常工作。 “ BBV”获得正确的工具提示文本,“ BB”缩写也是如此。
如何使.replace()能够在json fila中获得所有缩写,并使.replace()像“ / \ b(bb | bbv)/ gi”一样工作?
我已经尝试将put变量设置为“ / \ b(” + short +“)/ gi”,但是它不起作用。
任何帮助将不胜感激。