javascript - 将 html 标签放在字符串中的匹配项周围

标签 javascript html regex

我一直在寻找答案,但找不到适合我的特定用例的答案:由于 HTML 标签,我正在尝试使字符串中的所有匹配项(来自字典对象)显示为绿色。

特别是有一种情况我还没有找到解决方法(在我的代码后面解释)。

var data = "cat fish";

var dictionary = {
    "regex1": "cat",
    "regex2": "cat fish"
}


function buildColoredString(data, dictionary) {
    var coloredString = data;

    for (var prop in dictionary) {
        var toReplace = new RegExp(dictionary[prop].regex, "g");
        var newString = "<b style='color: green;'>" + dictionary[prop].regex + "</b>";
        coloredString = coloredString.replace(toReplace, newString);
    }

    console.log(coloredString);
}

运行 buildColoredString 时,我只得到“cat”被 HTML 标签包围,而不是“cat Fish”,因为由于 HTML 标签现在存在于我正在构建的字符串中,所以它不匹配。知道如何解决这个问题并让“cat”和“catfish”被 HTML 标签包围(我不介意是否有“太多”标签,从视觉 Angular 来看其中一些标签毫无用处。

感谢您的帮助,祝您有美好的一天!

最佳答案

字符串的大小对字典进行排序。先做“猫鱼”,然后再做“猫”...

关于javascript - 将 html 标签放在字符串中的匹配项周围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995942/

相关文章:

javascript - 单击时获取链接的内部 html

php - 抓取任何以 http 开头的字符串,直到 php 中的第一个空格字符

asp.net - 如何在谷歌地图上设置中心?

javascript - 使用对象键进行 ng-switch

javascript - 在 JavaScript 中单击按钮时将用户输入添加到列表

javascript - 为什么 CSS 转换发生在 unshift() 而不是 ng-repeat 列表中的 shift()?

html - 如何强制表格单元格遵循其行高?

php - 如何根据 w3c 使用 str_replace 或其他一些 php 函数使 img 标签有效?

C++/Boost 字符串替换 : How do I replace '&' with '&amp;' only when & ends with a ;

java - Matcher.group 和正则表达式 不提取完整的正则表达式