2013-12-10 2 views
1

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

1- они используются для захвата - как в: /(\d{3})-(\d{3})-(\d{4})/g

2 - они используются для группы - как в: /(phone|#)?\d{3}-\d{3}-\d{4}/g

Есть ли способ указать, что регулярное выражение должно группироваться в одном выражении и захватывать на другом. Кажется, для каждого из них должно быть другое обозначение.

+1

Обратите внимание, что ваше понимание немного неверно: 1 - используется для группировки и захвата, но группа имеет только одну альтернативу, 2- используется для группировки и захвата с группой, содержащей две альтернативы. '()' имеет только одну группу значений (что подразумевает захват). Модификатор '?:' Отключает захват. – slebetman

ответ

2

Да, вы можете определить не-захвата групп, как это:

/(?:phone|#)/ 

?: сразу после открытия скобка указывает на то, что он не должен ничего захватить.

+0

сладкий - спасибо! –

Смежные вопросы