用于从 Google Sheets URL 中提取电子表格 ID 和工作表 ID 的 JavaScript 正则表达式

use*_*451 5 javascript google-docs google-sheets

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

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

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

Ami*_*wal 7

假设 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]);
}
Run Code Online (Sandbox Code Playgroud)


小智 6

如果成功,该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];
Run Code Online (Sandbox Code Playgroud)

(请注意[1]两条说明末尾的 )