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

如何用.includes()查找1000-100000范围内的数字?

解决方法:用正则匹配1000-100000范围的数字或指定格式

你的原代码存在关键逻辑错误:e.textContent.includes(',000' || ',9' || ...) 写法无效。|| 运算符会直接返回第一个非空字符串 ',000',后面的,9等条件根本不会生效,导致只能匹配带,000的内容。

要实现匹配1000-100000的数字或x,xxx to xxx,xxx格式,推荐使用正则表达式,以下是两种可行方案:

方案一:直接匹配目标格式

如果目标文本格式固定(千分位数字或范围),可以用正则直接匹配:

const numShare = await page.$$eval(".FormData", els => {
  // 匹配1000-100000的千分位数字,或x,xxx to xxx,xxx格式
  const targetRegex = /(?:\b(?:\d{1,2},\d{3}|100,000)\b)|(?:\b\d{1,2},\d{3} to \d{1,2},\d{3}\b)/;
  const targetElement = els.find(el => targetRegex.test(el.textContent));
  
  if (targetElement) {
    // 提取匹配到的具体内容
    const matchResult = targetElement.textContent.match(targetRegex);
    return matchResult ? matchResult[0].trim() : targetElement.parentNode.textContent.trim();
  }
  return null; // 未找到时返回null,可根据需求调整
});

return numShare;

正则说明:

  • \b:单词边界,避免匹配长数字的片段(比如123,4567里的23,456)
  • \d{1,2},\d{3}:匹配1-99,999的千分位数字(1,000到99,999)
  • 100,000:精确匹配100,000
  • \d{1,2},\d{3} to \d{1,2},\d{3}:匹配x,xxx to xxx,xxx的范围格式

方案二:提取数字后判断范围

如果文本格式不固定,更稳妥的方式是提取所有数字,去掉千分位逗号后判断数值范围:

const numShare = await page.$$eval(".FormData", els => {
  const targetElement = els.find(el => {
    // 提取所有带千分位的数字
    const numberStrs = el.textContent.match(/\d{1,3}(?:,\d{3})+/g) || [];
    // 转换为数字并检查是否在1000-100000之间
    return numberStrs.some(str => {
      const num = parseInt(str.replace(/,/g, ''), 10);
      return num >= 1000 && num <= 100000;
    });
  });
  
  if (targetElement) {
    return targetElement.parentNode.textContent.trim();
  }
  return null;
});

return numShare;

针对你编辑后的代码优化

如果已经通过节点关系定位到目标元素,直接在evaluate里用正则提取即可:

const numShare = await page.evaluate(() => {
  const targetEl = document.querySelector(".FormData")?.parentNode.nextElementSibling.nextElementSibling;
  if (!targetEl) return null;
  
  const text = targetEl.textContent.trim();
  const targetRegex = /(?:\b(?:\d{1,2},\d{3}|100,000)\b)|(?:\b\d{1,2},\d{3} to \d{1,2},\d{3}\b)/;
  const matchResult = text.match(targetRegex);
  
  return matchResult ? matchResult[0] : text; // 未匹配到返回原文本,可调整
});

return numShare;

内容的提问来源于stack exchange,提问作者Jojo Amankwa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 06:20:58