2017-08-07 41 views
-3

我有一个简单的Google电子表格链接。在JavaScript中与正则表达式拼搏

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) 
} 
+0

你会得到什么答案呢? – NikxDa

+0

@NikxDa我收到以下内容: '/ docs.google.com/spreadsheets/d/kdfaghlkdghidubtinvieorn' – mfizz

回答

0

尝试(?:\gid=.*)

所以你会得到id作为GID = 12345

0

你的正则表达式似乎赛后/ d /就好了那些信。 也许你会得到更好的结果,如果你正在寻找字符之间的斜线,而不是那个贪婪.*

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

例如片段:

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);

0

它是与语法,我不知道为什么,但包装另外的支架周围似乎解决问题:

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