我有以下字符串:如何在「[abc]」這樣的比賽中排除「[」和「]」?
[a] [abc] test [zzzz]
我試圖讓這樣一個數組:
[0] => a
[1] => abc
[2] => zzzz
我試過下面的代碼:
var string = '[a] [abc] test [zzzz]';
var matches = string.match(/\[(.*?)\]/g);
for(var i = 0; i < matches.length; i++)
console.log(matches[i]);
但我控制檯輸出顯示:
[a]
[abc]
[zzzz]
我嘗試添加兩個非捕獲組(?:
),像這樣:
var matches = string.match(/(?:\[)(.*?)(?:\])/g);
但我看到同樣的比賽,持平。
怎麼回事,我該如何得到我想要的數組?
你在正確的軌道上稍快運行。 [(。*)]將匹配您要查找的令牌,但這些令牌具有方括號。之後請刪除括號。 – bengoesboom
這就是爲什麼我很傷心,JavaScript不支持lookbehinds。 '/(?<\[).*?(?=\])/''比黑客要容易得多。 –
@Kolink非捕獲的表達式看起來更好IMO。 '(?:\ [{1}(?。*)\] {1})' –
Phill