2016-12-20 7 views
-2

У меня есть строкаКак разобрать строку {{}}

var str = "{{a}} {{b}} aaa"; 

Я хочу, чтобы разбить строку с {{}}. Итак, мой ожидаемый результат

array = ["a", "b"] 

Update:

В другом случае, учитывая

var str1 = "{{a {{b}}}}", 
    str2 = "{{{a}}}"; 

Результат должен быть

var arr1 = ["b"], 
    arr2 = ["a"]; 
+0

Итак, где пробелы и 'aaa' идут? – ceejayoz

+6

Как вы хотите обрабатывать такие случаи, как '' {{a {{b}}}} и '{{{a}}} ''? –

+0

@ceejayoz - Они не заключены в '{{}}'. –

ответ

3

Одним из вариантов было бы match их всех, а затем извлечь содержимое.

var units = [ 
 
    "{{a}} {{b}} aaa", 
 
    "{{a {{b}}}}", 
 
    "{{{a}}};" 
 
]; 
 
units.forEach(function(str) { 
 
    var matched = str.match(/{{([^}]*[^{]*)}}/g).map(function(s) { 
 
     return s.substring(2, s.length - 2) 
 
    }); 
 
    console.log(str, '='); 
 
    console.log(matched); 
 
});

+0

@ Tushar Yep. Готово! –

+0

Прохладный. Вот [Demo on RegEx101] (https://www.regex101.com/r/GdRgVN/3). Добавьте пояснения к регулярному выражению. – Tushar

+0

проверьте с помощью {"{{{b}} {{c}}}}" ' –

0

Как уже упоминалось там не может быть лучшим способом, чтобы покрыть каждый сценарий, но разделение может быть использован как:

var str1 = "{{a}} {{b}} aaa", str2 = "{{a {{b}}}}", str3 = "{{{a}}};" 

var splits = str1.split(/[^{][^.][^}]|[{}]/).filter(Boolean); 
console.log(splits); 

Результаты:

Array [ "a", "b" ] 
Array [ "b" ] 
Array [ "a" ] 

Примеры:

https://jsfiddle.net/gsL46bg7

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