首页 > 解决方案 > 无法获取此正则表达式来提取我的捕获组

问题描述

我知道 google-apps-script 不完全支持正则表达式。但是在我的其他功能上,它提取了我正在寻找的东西。所以看来我在这里遗漏了一些东西。

var teststring = "E37:E61";
var regExp = /\w+(\d+)\:\w+(\d+)/; // no i or g needed here as fas as I think
var extractedNumbers = regExp.exec(teststring);

输出:

[E37:E61, 7, 1]

我还测试过:

var teststring = "E37:E61";
var regExp = new RegExp(/\w+(\d+)\:\w+(\d+)/); // Note that '' are not working I had to use //
var extractedNumbers = regExp.exec(teststring);

输出:

null

额外测试:

var regExp = /\w+(\d+)\:\w+(\d+)/;
var rowsToFill = teststring.match(regExp);

输出:

[E37:E61, 7, 1]

我正在寻找的是:

[37, 61]

标签: javascriptregexgoogle-apps-scriptgoogle-sheets

解决方案


您应该注意\w匹配数字。

用于[^\W\d]匹配除数字以外的任何单词字符,或仅匹配[a-zA-Z_]

var teststring = "E37:E61";
var regExp = /[^\W\d]+(\d+):[^\W\d]+(\d+)/; 
var extractedNumbers = regExp.exec(teststring);
console.log(extractedNumbers);
// => [ "E37:E61", "37", "61" ]


推荐阅读