-1

我想用正则表达式从字符串中提取某些东西。我知道我没有使用全球运营商,因为我只需要一个比赛,但我很好奇,为什么它不工作正则表达式在google脚本中产生错误的结果

var string = 'a02_ability10' 

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

这并没有给我任何结果。删除它工作的全球运营商。我已经在正则表达式测试中与全局运算符一起使用它,并且它可以工作。

试图让“02”出

为什么是不是在这里工作?

+3

返回数组'[“A02”]'是你所期望的(你永远不会指出你想得到什么,或者你实际得到的,所以很难知道你的问题是什么。 。)...没有/ g它会返回'[“a02”,“02”]'...因此,如果您将**添加到问题**您的预期结果 –

+0

另外,你应该删除你的模式中无用的所有东西(8个字符找) –

+1

什么是正则表达式测试器,并且它是否处于JavaScript模式? – Keith

回答

0

没有GI,它给在下一位置的充分匹配的字符串和组匹配的字符串([\ d]即,12)。(只返回第一匹配的字符串)

变种字符串= 'a12_ability10'

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

结果:[ “A12”, “12”,指数:0,输入: “a12_ability10”]

With gi:它会只给出完全匹配的字符串。

结果: “A12”]

请找到下面的例子更好地理解。

var string = 'a12_ability10' 
 

 
var result =string.match(/(?:^a)([\d]+)/) 
 
console.log(result); 
 

 
var string = 'a12_ability10' 
 

 
var result =string.match(/(?:^a)([\d]+)/gi) 
 
console.log(result); 
 

 
var string = 'a12_a10' 
 

 
var result= string.match(/(?:a)([\d]+)/); 
 
console.log(result); 
 

 

 
var result= string.match(/(?:a)([\d]+)/gi); 
 
console.log(result);

+0

我刚刚运行在谷歌的脚本程序和记录器输出代码为 空 空 [A12,12] [A12,A10] ,这其中就有我的问题为什么它给予空 为什么gi给我完整的结果,以前我会得到第一个数组[0]包含完整的结果和第二个[1]包含我的匹配,即'a12'为什么是(?: )不匹配并包含结果 – mfizz