Я хотел бы разбить строку на %\d+
или \n
. Я был в состоянии успешно разделить на любом из этих двух, но не на обоих:Почему результаты string.split() не определены?
> msg = 'foo %1 bar \n baz %2'
> msg.split(/(%\d+)/)
["foo ", "%1", " bar
baz ", "%2", ""]
> msg.split(/(\n)/)
["foo %1 bar ", "
", " baz %2"]
> msg.split(/(\n)|(%\d)/)
["foo ", undefined, "%1", " bar ", "
", undefined, " baz ", undefined, "%2", ""]
В последнем случае, почему в результирующем массиве undefined
, и что я должен делать?
Обновление: Я забыл указать, что мне нужны разделители. В результате я хочу это:
["foo ", "%1", " bar ", "\n", " baz ", "%2"]
Захват групп, которые не фиксировали никакого значения, дают 'undefined' – Bergi