Javascript 正则表达式在google脚本中产生错误结果

Javascript 正则表达式在google脚本中产生错误结果,javascript,regex,google-sheets,google-spreadsheet-api,Javascript,Regex,Google Sheets,Google Spreadsheet Api,我试图使用正则表达式从字符串中提取一些内容。我知道我不必使用全局运算符,因为我只需要一个匹配项,但我很好奇为什么它不起作用 var string = 'a02_ability10' string.match(/(?:^a)([\d]+)/gi) 这没有给我任何结果。删除全局运算符,使其正常工作。我在regex tester中与全局操作符一起使用过它,它很有效 试图把“02”弄出来 为什么它不在这里工作?如果没有gi,它将在下一个位置提供完全匹配的字符串和组匹配的字符串([\d],即12)。(

我试图使用正则表达式从字符串中提取一些内容。我知道我不必使用全局运算符,因为我只需要一个匹配项,但我很好奇为什么它不起作用

var string = 'a02_ability10'

string.match(/(?:^a)([\d]+)/gi)
这没有给我任何结果。删除全局运算符,使其正常工作。我在regex tester中与全局操作符一起使用过它,它很有效

试图把“02”弄出来


为什么它不在这里工作?

如果没有gi,它将在下一个位置提供完全匹配的字符串和组匹配的字符串([\d],即12)。(仅返回第一个匹配的字符串)

变量字符串='a12_能力10'

string.match(/(?:^a)([\d]+)/)

结果:[“a12”,“12”,索引:0,输入:“a12_能力10”]

使用gi:它将只提供完全匹配的字符串

结果:[“a12”]

为了更好地理解,请查找下面的示例

var字符串='a12_能力10'
var result=string.match(/(?:^a)([\d]+)/)
控制台日志(结果);
变量字符串='a12_能力10'
var result=string.match(/(?:^a)([\d]+)/gi)
控制台日志(结果);
变量字符串='a12_a10'
var result=string.match(/(?:a)([\d]+)/);
控制台日志(结果);
var result=string.match(/(?:a)([\d]+)/gi);

控制台日志(结果)返回数组
[“a02”]
这就是您所期望的(您从不指出您期望的内容或实际得到的内容,因此很难知道您的问题是什么…)。。。如果没有/g,则返回
[“a02”,“02”]
。。。所以,如果你能把你的预期结果添加到问题中,那就太好了。你应该删除模式中所有无用的东西(8个字符)什么是regex tester,它是JavaScript模式吗?@keith regex101和JaromandaX,它不会产生这个结果我刚刚在google脚本应用程序中运行了你的代码,日志输出为null[a12,12][a12,a10],这就是我的问题所在,为什么它会给出null为什么gi会给我完整的结果,之前我会得到第一个数组[0]包含完整的结果,第二个数组[1]包含我的匹配项,即'a12',为什么(?)不匹配并包含结果