You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bootstrap-table客户端搜索未剥离HTML格式,无法匹配连续关键词

解决Bootstrap-table客户端搜索无法匹配带HTML标签的连续文本问题

问题根源:Bootstrap-table默认的客户端搜索会直接对单元格的原始HTML内容进行匹配,比如你的「用户名」列单元格内容是<strong>Smith</strong> John,当搜索“Smith John”时,实际要匹配的字符串是Smith</strong> John,中间的HTML标签打断了连续文本,导致匹配失败。

以下是两种实用的解决方法:

方法一:全局修改搜索匹配逻辑

直接覆盖Bootstrap-table默认的匹配函数,让搜索前先剥离所有HTML标签:

// 覆盖默认的字符串匹配函数
$.fn.bootstrapTable.utils.matches = function (s, r) {
  // 用正则移除所有HTML标签
  const plainText = s.replace(/<[^>]+>/g, '');
  // 对纯文本进行正则匹配
  return plainText.match(r);
};

这段代码会作用于所有Bootstrap-table的客户端搜索,所有列的搜索都会先剥离HTML再匹配。

方法二:针对指定列配置搜索格式化器

如果只需要某几列处理HTML,可以给对应列添加data-search-formatter属性,指定剥离HTML的函数:

<table id="userTable">
  <thead>
    <tr>
      <!-- 给用户名列配置搜索格式化器 -->
      <th data-field="username" data-search-formatter="stripHtml">用户名</th>
      <th data-field="email">邮箱</th>
    </tr>
  </thead>
</table>

<script>
// 定义剥离HTML的工具函数
function stripHtml(htmlContent) {
  return htmlContent.replace(/<[^>]+>/g, '');
}

// 初始化表格
$('#userTable').bootstrapTable({
  url: '/api/users', // 你的数据接口
  pagination: true,
  search: true
});
</script>

这种方式更灵活,只会对配置了data-search-formatter的列生效。

内容的提问来源于stack exchange,提问作者Leszek Pachura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:37:20