2012-06-29 2 views
2

Я новичок в Regex и борется с одним, и абстрагируется мою проблему к следующему вопросу:вводных единиц в регулярных выражениях, возвращающиеся дополнительные матчи

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

array1 будет, конечно, содержат только «ABC», но array2 будет содержать как «abc», так и «b».
Почему массив2 подбирает «b»? Это проблема для меня, потому что я сопоставляю некоторые вещи внутри фигурных скобок типа «{1 2a 3}» с регулярным выражением, например /\{(\d(|a|b)\s?)+\}/, и полученный массив возвращает пустую строку и «3», а также желаемый «{1 2a 3}».

Спасибо!
Исаак

ответ

1

Использовать (?:) вместо ().

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

При использовании (), match возвращения соответствует группе также. Группы - это часть строки, которая соответствует частям регулярного выражения, которые находятся в ().

+0

Отлично! Благодарю. –