Javascript 用于从 google sheets URL 中提取传播 sheet ID 和 sheet ID 的正则表达式
Javascript regex for extracting spreadsheet ID and sheet ID from google sheets URL
我想要 Javascript 正则表达式来从 google sheets URL 中提取传播 sheet ID 和 sheet ID。 sheets.google.com 传播 sheet 的 URL 看起来像:https://docs.google.com/spreadsheets/d/1QOKbrUz7AWUwT-hNfWd1Pxf__QObYCZ1rD2CKMjpnGw/edit#gid=0。
This Link 描述了用于提取 spreadsheet ID 和 sheet ID 的正则表达式。我在 Javascript 中尝试过它们,但它不起作用。这是我试过的代码:
var spreadsheetId = new RegExp("/spreadsheets/d/([a-zA-Z0-9-_]+)").exec(resourceUrl);
var sheetId = new RegExp("[#&]gid=([0-9]+)").exec(resourceUrl);
假设 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]);
}
如果成功,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]
)
只查找“/d/”之后的段有问题吗?
/.+\/d\/([^/]+)/
捕获组是id
我想要 Javascript 正则表达式来从 google sheets URL 中提取传播 sheet ID 和 sheet ID。 sheets.google.com 传播 sheet 的 URL 看起来像:https://docs.google.com/spreadsheets/d/1QOKbrUz7AWUwT-hNfWd1Pxf__QObYCZ1rD2CKMjpnGw/edit#gid=0。
This Link 描述了用于提取 spreadsheet ID 和 sheet ID 的正则表达式。我在 Javascript 中尝试过它们,但它不起作用。这是我试过的代码:
var spreadsheetId = new RegExp("/spreadsheets/d/([a-zA-Z0-9-_]+)").exec(resourceUrl);
var sheetId = new RegExp("[#&]gid=([0-9]+)").exec(resourceUrl);
假设 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]);
}
如果成功,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]
)
只查找“/d/”之后的段有问题吗?
/.+\/d\/([^/]+)/
捕获组是id