2015-11-30 2 views
1

Как создать необязательную группу, не связанную с захватом, в JavaScript-регулярном выражении?Необязательная группа в regex

/foo (bar)?bam/ // this does not work for me... 

Я хочу, чтобы это соответствовать

foo bar bam 

и

foo bam 
+0

Ваш RegEx работает для меня! Это лишь незначительная проблема с пробелами? –

+0

Ваш шаблон [должен работать] (http://regexr.com/3caeg). Может быть, вам не хватает модификатора 'g'? – Dencker

+0

На самом деле, я использовал это регулярное выражение в регулярном выражении в консоли Chrome, и он не работал для меня. Не уверен в формате регулярного выражения консоли Chrome. – Ben

ответ

3

Non захвата группа создается с помощью (?:...):

foo (?:bar)?bam 
    ^^ 

См regex demo

Обратите внимание, что группа, не связанная с захватом, все еще потребляет символов, поэтому подстрока, соответствующая группе, не участвующей в записи, по-прежнему будет частью матча.

Отрывок:

var res = 'foo bar bam\nfoo bam'.match(/foo (?:bar)?bam/g); 
 
document.write(JSON.stringify(res));

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