2017-02-09 4 views
-2

У меня вопрос о регулярном выражении. Я хочу иметь два матча в трех разных состояниях с одним регулярным выражением. Это мой источник, где я хочу выполнить регулярное выражение.JavaScript regex

Первый пример:

@@include('some string here', []) 

// This is the output I want: 
// First match: 'some string here' 
// Second match: '[]' 

Второй пример:

@@include('some string here', {}) 

// This is the output I want: 
// First match: 'some string here' 
// Second match: '{}' 

Третий пример:

@@include('some string here') 

// This is the output I want: 
// First match: 'some string here' 

Все т он утверждает, что мне нужно с одним регулярным выражением. Это возможно?

+0

Этот синтаксис не является javascript – Isaac

+1

Используйте дополнительный шаблон для второй части. – Barmar

+1

@Isaac Код, который выполняет сопоставление, предположительно находится в Javascript. – Barmar

ответ

1

Так что это, возможно, потребуются некоторые хитрости, основанных на том, что вы ожидаете, чтобы быть разумными значениями внутри вашего «{}» и «[]», но он должен получить Вас на правильном пути:

var regex = /@@include\((\'.*?\')(?:,\s+(\[.*?\]|\{.*?\}))?\)/i; 
// or, non greedy version: 
// var regex = /@@include\((\'.*?\')(?:,\s+(\[.*\]|\{.*\}))?\)/i; 

"@@include('some string here')".match(regex); 
// ["@@include('some string here')", "'some string here'", undefined] 

"@@include('some string here', {})".match(regex); 
// ["@@include('some string here', {})", "'some string here'", "{}"] 

"@@include('some string here', [])".match(regex); 
// ["@@include('some string here', [])", "'some string here'", "[]"] 

Надеется, что это помогает!

+0

Спасибо за ваш ответ! {} и [] соответствуют объекту или массиву. – justkidding96

+0

Правильно, я знаю - но у вас наверняка есть значения в них? Будут ли у вас объекты внутри объектов или массивов внутри массивов? Это может усложнить ситуацию ... Возможно, вам придется сделать внутреннее содержимое не жадным ... обновить мой ответ – MacPrawn

+0

Да, я хочу, чтобы все вещи внутри моего массива или объектов. Как массив внутри объектов или объект с массивами. Как я могу это сделать? – justkidding96