-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