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

如何修改contains函数返回所有包含指定文本的div元素数组

问题原因排查

你提供的原函数逻辑上本身就是要返回所有匹配元素的数组,出现只返回第一个匹配结果的情况,通常是因为正则构造逻辑有缺陷:如果传入的检索文本包含正则特殊字符(比如.、*、?等)会导致匹配规则异常,或者你需要的是精确全量匹配,原规则做的是模糊包含匹配。

优化修改后的代码

function contains(selector, text, ignoreCase = false) {
  // 转义文本中的正则特殊字符,避免匹配异常
  const escapedText = text.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
  // 构造正则,支持是否忽略大小写
  const matchReg = new RegExp(escapedText, ignoreCase ? 'i' : '');
  // 转成标准数组后过滤匹配元素
  return Array.from(document.querySelectorAll(selector)).filter(element => {
    return matchReg.test(element.textContent.trim());
  });
}

调用示例

检索所有包含文本测试内容的div元素,直接调用即可得到所有匹配元素组成的数组:

const matchedDivs = contains('div', '测试内容');
// 输出所有匹配的div元素
console.log(matchedDivs);

如果需要忽略大小写匹配,可以加第三个参数为true:

const matchedDivs = contains('div', 'testcontent', true);

内容的提问来源于stack exchange,提问作者Kamel Labiad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:24:03