2014-12-18 3 views
0

У меня есть экспресс-маршрутизатор, который я хочу принять разделенный точкой с запятой. * должен стоять за 0 или более значений, однако он принимает только один или несколько в моем случае.express router - regex - список разделенных точкой с запятой

Вот мой код:

App.get('/sth/((\\w+(\;\\w+)*))', 

однако он принимает только

/sth/aaa;bbb 
/stg/aaa;bbb;ccc 
/sth/aaa;bbb;ccc;ddd 
... 

, но не

/sth/aaa 

.

Как я могу достичь своей цели или что не так с моим регулярным выражением? Наверное, я пропустил только одну тривиальную вещь.

Спасибо.

+0

'/ sth/\\ w + (\; \\ w +) *' этого должно быть достаточно – vks

ответ

1

Обойти или решение было бы что-то подобное

App.get('/sth/((\\w+(;\\w+){0,}))', 

Как я испытал, выразить не использует стандартное регулярное выражение, но она имеет свою собственную реализацию , а * имеет различную usecase. Было бы неплохо узнать, как это лечится, но мне кажется, что он получает все от 1 до бесконечности.

1

Изменить это:

/sth/\\w+(;\\w+)* 
+0

К сожалению, это то же самое, что я написал. – user2194805

+0

@ user2194805 Нет, это не то же самое. Попробуй. – Maroun

+0

Я пробовал. Я имел в виду, что он имеет тот же результат, однако я не знаю, как получить ценность в вашем решении. Для одного элемента он не работает, однако теперь я знаю, почему (см. Ниже мое решение). – user2194805

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