Сплит строка на квадратных скобках и не скобки - PullRequest
1 голос
/ 24 апреля 2019

Это проблема регулярных выражений Я хочу разбить строку

apple[orange] papya [mango] [grapes]

в этот массив [ 'Яблоко', '[оранжевый]', 'папайя', '[манго]', '[виноград]']

Я пытался так "apple[orange] papya [mango] [grapes]".match(/[^[\]]+(?=])/g) Но он возвращает только то, что находится в скобках

1 Ответ

5 голосов
/ 24 апреля 2019

Вы можете попробовать это регулярное выражение: /(\[[^\]]+\])/ оно будет соответствовать открытой скобке любое количество не закрывающей скобки и закрывающей скобки, скобки используются для захвата совпадения в сплите.

var input = 'apple[orange] papya [mango] [grapes]';
console.log(input.split(/(\[[^\]]+\])/).filter(s => s.trim()));

Триммер используется для фильтрации заготовок, которые вы также можете использовать

var input = 'apple[orange] papya [mango] [grapes]';
var words = input.split(/(\[[^\]]+\])/).map(s => s.trim()).filter(Boolean);
console.log(words);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...