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

在AppScript中用正则匹配HTML元素内最后出现的数字页码

解决方案

问题根源

你当前的正则存在三个核心问题:

  1. 转义处理错误:使用new RegExp构造正则时,字符串内的反斜杠需要双重转义,原写法的转义逻辑混乱导致匹配失效。
  2. 未排除“下一页”按钮:没有过滤带有next类的<a>标签,会误匹配到按钮链接里的数字(比如示例中的49)。
  3. 重复组捕获逻辑错误:带重复量词的非捕获组无法保留最后一次匹配的结果,捕获组会被覆盖。

修正后的正则与代码

我们需要精准匹配最后一个不带next类的page-numbers标签内的数字,以下是可行的实现:

function getTotalPages() {
  const url = 'https://example.com';
  const response = UrlFetchApp.fetch(url);
  const html = response.getContentText();
  
  // 匹配最后一个符合要求的页码标签
  const regex = /.*<a class="page-numbers"(?!.*next)[^>]*>(\d+)<\/a>/;
  const match = html.match(regex);
  
  // 生成指定格式的结果
  const result = match && match[1] ? `Total pages: ${match[1]}` : "Total pages: 0";
  
  SpreadsheetApp.getActiveSheet().getRange('a2').setValue(result);
}

正则逻辑说明

  • .*:贪婪匹配所有前置内容,确保定位到最后一个符合条件的页码标签
  • <a class="page-numbers"(?!.*next):匹配带有page-numbers类但不包含next类的<a>标签,直接排除“下一页”按钮
  • [^>]*>:匹配标签内的任意属性内容,直到标签结束
  • (\d+):捕获标签内的数字页码
  • <\/a>:匹配标签闭合部分

内容的提问来源于stack exchange,提问作者James Osborne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:57:19