Как извлечь текст между символами регулярными выражениями?

Есть строка [123][456][qwerty]... Нужно вынести в массив то что внутри []. Пробовал .match( /[\[]{1}?(.+)[\]]{1}/ ), но оно выносит только первый, а остальные нет, а если добавить /g, то уже не то.
Надеюсь модеры не будут злющими и не будут удалять мой вопрос, так как в гугле я искать не умею, несколько часов не могу найти нормальный ответ.
  • Вопрос задан
  • 4169 просмотров
Решения вопроса 4
@Ridz
var regexp = /([^\]\[]+)(?=\])/g,
     str = "[123][456][qwerty]",
     result=str.match(regexp);
 alert(JSON.stringify(result));
Ответ написан
@vshvydky
На мой взгляд интуитивно понятнее сделать так:
var result = str.slice(1,-1).split('][');
Ответ написан
inblank
@inblank
Full Stack Web Developer
Только если использовать exec в цикле. Что-то вроде такого:
var regexp = /\[([^\]]+)\]/g,
    str = "[123][456][qwerty]",
    current,
    result=[];
while ((current=regexp.exec(str)) != null){
 result.push(current[1]);
}
Ответ написан
Как вариант можно сделать вот так:
var result = str.match( /\[([^\]]+)\]/ig ).map(n => n.slice(1,-1));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы