Расщепление строки с помощью фигурных скобок в качестве разделителей? - PullRequest
0 голосов
/ 10 сентября 2009
'{5}<blah>{0}</blah>'

Я хочу превратить это в:

['{5}', '<blah>', '{0}', '</blah>']

я сейчас использую: ________.split(/({.*?})/);

но это не работает, когда фигурная скобка является первым символом, как в случае:

'{0}<blah>'

, который превращается в: ['', '{0}', '<blah>'] ... массив из 3 элементов, а не 2

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

Спасибо!

Ответы [ 3 ]

5 голосов
/ 10 сентября 2009

В вашем регулярном выражении нет ничего плохого, но есть проблема с тем, как вы используете split. Split возвращает массив, основанный на разделителе, поэтому, если разделитель имеет значение FIRST, он дает вам материал слева и справа от элемента split.

Просто проверьте, если первый элемент == '', и удалите его, если он есть.

0 голосов
/ 10 сентября 2009

Что вы думаете о:

'{5}<blah>{0}</blah>'.split(/{([^}]+)}/g)

Значением фигурных блоков являются каждые 2 элемента из пункта 1.

0 голосов
/ 10 сентября 2009

Это должно сделать это:

split(/((?!^)\{.*?\})/)

Отрицательный прогноз - (?!^) - успешен, если совпадение не начинается в начале строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...