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

Acrobat JS正则量词无效错误:提取PDF中8位数字并分页命名

Adobe Acrobat JavaScript正则匹配8位数字遇「无效量词」问题解决

问题场景

在Adobe Acrobat中编写JS代码提取PDF里的8位数字时,使用正则表达式/(?<!\d)\d{8}(?!\d)/会触发「无效量词」错误,但该正则在常规JS测试平台中能正常匹配目标数字。

问题原因

Adobe Acrobat内置的JavaScript引擎基于旧版ECMAScript标准,不支持ES2018引入的**后行断言((?<!...))**这类高级正则特性,而现代JS测试平台默认使用支持该特性的新引擎,因此会出现兼容性差异。

解决方案

改用兼容旧版引擎的正则逻辑,使用单词边界\b界定8位数字的前后非数字边界,即/\b\d{8}\b/。同时调整代码流程,先将单页文本拼接为完整字符串后再执行匹配,具体实现代码如下:

// 获取当前活跃PDF文档
var targetDoc = app.activeDocs[0];
var totalPages = targetDoc.numPages;

// 遍历每一页处理
for (var pageIdx = 0; pageIdx < totalPages; pageIdx++) {
    // 提取当前页所有文本并拼接
    var pageWords = targetDoc.getPageNthWord(pageIdx, 0, targetDoc.getPageNumWords(pageIdx)-1);
    var pageText = pageWords.join(" ");
    
    // 匹配8位数字ID
    var idMatchResult = pageText.match(/\b\d{8}\b/);
    if (idMatchResult && idMatchResult[0]) {
        // 导出当前页为单独PDF,用匹配到的ID命名
        var savePath = "/自定义保存路径/" + idMatchResult[0] + ".pdf";
        targetDoc.extractPages({
            nStart: pageIdx,
            nEnd: pageIdx,
            cPath: savePath
        });
    }
}

关键说明

  • \b是单词边界匹配符,数字属于单词字符范畴,因此能精准匹配前后无其他数字的独立8位数字序列,替代原正则的负向断言逻辑。
  • 若PDF页面文本存在特殊排版导致数字被拆分,需先优化文本拼接逻辑,确保8位数字完整出现在字符串中。

内容的提问来源于stack exchange,提问作者Joshua Covarrubias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:40:27