首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过RegEx替换在hyperHTML中使用html标记包装字符串

如何通过RegEx替换在hyperHTML中使用html标记包装字符串
EN

Stack Overflow用户
提问于 2020-07-15 00:47:31
回答 1查看 84关注 0票数 2

我正在构建一个搜索自动建议组件,其中使用hyperHTML呈现结果。从服务器返回的建议的匹配字符串部分应突出显示。

我使用RegEx和String.prototype.replace来突出显示匹配的部分,但不知何故无法将其返回值输出到HTML。它只是将<strong>标记呈现为字符串。

我尝试了很多不同的方法来解决这个问题,但都没有成功,而且已经没有想法了……

这是我的渲染函数:

代码语言:javascript
复制
const suggestionsContainer = document.querySelector(
  ".js-suggestions-container"
);
const suggestions = [{
    title: "lorem ipsum dolor sit amet",
    url: "#"
  },
  {
    title: "lorem ipsum dolor sit amet",
    url: "#"
  }
];
let query = "ipsum";

function renderSuggestions(suggestions, query) {
  const queryRegEx = new RegExp(query, "gi");
  hyperHTML.bind(suggestionsContainer)`
      ${suggestions.map((suggestion) => hyperHTML.wire(suggestion)`
        <a href="${suggestion.url}">
          ${hyperHTML.wire()`${suggestion.title.replace(queryRegEx, "<strong>$&</strong>")}`}
        </a>
      `)}
  `;
}

renderSuggestions(suggestions, query);
代码语言:javascript
复制
a {
  display: block;
  margin: 1rem 0;
}
代码语言:javascript
复制
<script src="https://unpkg.com/hyperhtml@latest/min.js"></script>
<div class="js-suggestions-container"></div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 15:53:01

正如您可以使用see in this CodePen一样,您唯一需要的更改是显式地请求html

代码语言:javascript
复制
  ${suggestions.map((suggestion) => hyperHTML.wire(suggestion)`
    <a href="${suggestion.url}">
      ${{html: suggestion.title.replace(queryRegEx, "<strong>$&</strong>")}}
    </a>
  `)}

{html: ...}是最明显的方式,但hyperHTML也将数组作为HTML语言注入,但这可能是意想不到的,而lighterhtmlmicro html在缺省情况下都更安全,插入的内容必须始终显式注入。

另外,将文本作为内容进行连接也几乎是不必要的

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62900040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档