Я разделяю строку, используя функцию разделения Javascript с несколькими разделителями. Хотя я заставляю его работать, его поведение меня озадачивает. Ищите объяснение этому поведению
У меня есть эта строка ниже -
let z = 'c4 <= v4';
Я разделил это с console.log(z.split(/(<|=|<=)/))
. Строка может содержать <
, =
или <=
, поэтому я делю ее на 3 разделителя.
Это дает мне [ 'c4 ', '<', '', '=', ' v4' ]
, чего я не ожидаю. Я ожидал [ 'c4 ', '<=', ' v4' ]
.
Затем я полагаю, что split разбирается по списку разделителей, поэтому сначала он делится на <
, а затем разделяет результат на =
, что объясняет пустой элемент между <и =. Затем, когда он дошел до разделителя <code><=, он не смог найти ничего в результате.
Итак, чтобы доказать свою мысль, я попытался console.log(z.split(/(=|<=)/))
.
Следуя моей логике, я ожидал, что результат будет [ 'c4 <', '=', ' v4' ]
, так как я ожидал, что split использует сначала =
в качестве разделителя.
Тем не менее, фактический результат составляет [ 'c4 ', '<=', ' v4' ]
. Как будто разделение только что пропущено через разделитель =
.
Я могу заставить его работать правильно, если я упорядочу порядок разделителей console.log(z.split(/(<=|<|=)/))
и получу [ 'c4 ', '<=', ' v4' ]
, что усиливает мое мышление, поскольку <=
является первым указанным разделителем.
Я искал целую группу и не мог найти объяснения этому поведению. Как работает разделение через разделители?
Большое спасибо заранее