在javascript中挣扎于正则表达式



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

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

我有以下正则表达式提取,它提取了链接的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)
}

尝试(?:gid=.*)

所以你会得到 id 为gid=12345

您的正则表达式似乎与/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);

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

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

最新更新