2017-08-07 40 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)