【问题标题】:Struggling with regex in javascript在 javascript 中使用正则表达式苦苦挣扎
【发布时间】:2017-08-07 08:35:58
【问题描述】:

我有一个简单的谷歌电子表格链接。

https://docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn/edit#gid=12345

我有以下 regextract 提取链接的 ID:

=REGEXEXTRACT(C2,"(?:/d/)(.*)(?:\/edit)")

似乎达到了预期的效果。

我正在尝试在谷歌脚本中重新创建它,但我没有得到相同的答案。

function regex() {
    var link = "https://docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn/edit#gid=12345";
    var regExp = new RegExp("(?:\/d\/)(.*)(?:\/edit)", "gi")
    var id = regExp.exec(link)[1];
    Logger.log(id)
}

【问题讨论】:

  • 那你得到什么答案?
  • @NikxDa 我得到以下信息:/docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn

标签: javascript google-sheets google-spreadsheet-api


【解决方案1】:

试试(?:\gid=.*)

所以你会得到 gid=12345

的 id

【讨论】:

    【解决方案2】:

    您的正则表达式似乎与 /d/ 之后的那些字母匹配就好了。 如果您正在寻找斜线之间的单词字符,而不是那种贪婪的.*,也许您会得到更好的结果?

    \/d\/(\w+)\/
    

    示例 sn-p:

    function getIdFromLink(link){
      let regExp = /\/d\/(\w+)\//;
      return regExp.exec(link)[1];
    }
    
    var link  =  "https://docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn/edit#gid=12345";
    
    var id = getIdFromLink(link);
    
    //Logger.log(id)
    console.log("id: "+ id);

    【讨论】:

      【解决方案3】:

      这与我不知道为什么的语法有关,但用另一个括号括起来似乎可以解决问题:

      (?:(\/d\/))(.*)(?:\/edit)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多