【问题标题】:Javascript regex for extracting spreadsheet ID and sheet ID from google sheets URL用于从谷歌表格 URL 中提取电子表格 ID 和表格 ID 的 Javascript 正则表达式
【发布时间】:2017-01-18 10:44:11
【问题描述】:

我想要 Javascript 正则表达式从 google 表格 URL 中提取电子表格 ID 和表格 ID。 sheet.google.com 电子表格的 URL 如下所示:https://docs.google.com/spreadsheets/d/1QOKbrUz7AWUwT-hNfWd1Pxf__QObYCZ1rD2CKMjpnGw/edit#gid=0

This Link 描述了用于提取电子表格 ID 和工作表 ID 的正则表达式。我在 Javascript 中尝试过它们,但它不起作用。这是我尝试过的代码:

var spreadsheetId = new RegExp("/spreadsheets/d/([a-zA-Z0-9-_]+)").exec(resourceUrl);
var sheetId = new RegExp("[#&]gid=([0-9]+)").exec(resourceUrl);

【问题讨论】:

    标签: javascript google-sheets google-docs


    【解决方案1】:

    假设 Google 电子表格 ID 的字符数超过 15 个,则正则表达式将如下所示。 GID 可能在 URL 中可用,也可能不可用。

    var resourceUrl = "https://docs.google.com/spreadsheets/d/1QOKbrUz7AWUwT-hNfWd1Pxf__QObYCZ1rD2CKMjpnGw/edit#gid=0";
    
    var matches = /\/([\w-_]{15,})\/(.*?gid=(\d+))?/.exec(resourceUrl);
    
    if (matches) {
      console.log("Spreadsheet: " + matches[1]);
      console.log("Sheet: " + matches[3]);
    }
    

    【讨论】:

      【解决方案2】:

      如果成功,exec() 方法会将匹配的字符放入其索引中。索引 0 是匹配字符的完整字符串。其他索引 (1, 2, ...) 是由括号分隔的正则表达式部分匹配的字符,按照它们出现的顺序。

      您的正则表达式匹配 URL 字符串的大部分,但 ID 是由括号分隔的部分。在这两种情况下,你只有一对括号,因此它们在索引 1 中。所以你想要的值在

       spreadsheetId = new RegExp("/spreadsheets/d/([a-zA-Z0-9-_]+)").exec(resourceUrl)[1];
       sheetId = new RegExp("[#&]gid=([0-9]+)").exec(resourceUrl)[1];
      

      (注意两个说明末尾的 [1]

      【讨论】:

        【解决方案3】:

        只查找“/d/”之后的段有问题吗?

        /.+\/d\/([^/]+)/
        

        捕获组是id

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-10-14
          • 2022-11-21
          • 2022-06-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多