2012-06-29 41 views
2

我是新的正則表達式,並已與一個掙扎,抽象出我的問題了以下問題:括號單位正則表達式返回額外的比賽

var foo = "abc"; 
var array1 = match(/abc/); 
var array2 = match(/a(b)c/); 

array1中當然會包含唯一的「ABC」,但是array2將同時包含「abc」和「b」。
爲什麼array2也拿起「b」呢?這對我來說是一個問題,因爲我在大括號內匹配了一些內容,如「{1 2a 3}」,使用正則表達式/\{(\d(|a|b)\s?)+\}/,結果數組返回空字符串和「3」以及所需的「{1 2a 3}」。

謝謝!
Isaac

回答

1

使用(?:)而不是()

/{(?:\d(|a|b)\s?)+}/ 

當您使用()match返回匹配組也。組是與正則表達式的部分對應的字符串的一部分,它們在()中。

+0

完美!謝謝。 –