首页 文章

用于从Google工作表网址中提取电子表格ID和工作表ID的Javascript正则表达式

提问于
浏览
1

我希望Javascript正则表达式从谷歌工作表URL中提取电子表格ID和工作表ID . sheet.google.com电子表格的网址如下所示: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);

2 回答

  • 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]

  • 2

    假设Google电子表格ID超过15个字符,那么正则表达式将是这样的 . GID可能在URL中可用,也可能不在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]);
    }
    

相关问题