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

如何优化Office Script中的结构化正则表达式搜索迭代逻辑?

重构后的Office Script代码

你可以通过维护一个正则规则数组来消除重复逻辑,既提升可维护性,又能保证返回数组的顺序稳定,优化后的代码如下:

function main(workbook: ExcelScript.Workbook, inputString: string): Array<string> {
    // 定义匹配规则数组,顺序对应返回数组的顺序
    const matchRules = [
        /(?<![0-9])([0-9]{2,3})[- ]([0-9]{3})[- ]([0-9]{3})(?![0-9])/g,
        /[Nn][Zz][Dd]/g,
        /([a-zA-Z]{1,3})-([0-9]{6})-([0-9]{3})(?![0-9])/g,
        /(?<![0-9])([0-9]{2})[- ]([0-9]{4})[- ]([0-9]{7})[- ]([0-9]{2,3})(?![0-9])/g
    ];

    // 遍历规则数组,执行匹配并生成结果
    return matchRules.map(rule => {
        const matches = inputString.match(rule);
        return matches ? matches[0] : "no match";
    });
}

关键优化点

  • 可维护性提升:后续要增减匹配项、调整正则或改变返回顺序,只需要修改matchRules数组即可,不用重复编写判断逻辑
  • 逻辑简化:用map方法一次性完成所有匹配和结果转换,消除了重复的if-else判断
  • 顺序稳定:返回数组的顺序完全由matchRules的顺序决定,不会出现null干扰顺序的问题
  • 性能优化:去掉了不必要的Map操作,直接生成结果数组,代码更高效

另外注意:原代码里的RegExp(/xxx/g)是冗余写法,直接使用正则字面量/xxx/g即可,效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:35:19