Какой-то шаблон регулярных выражений нарушает механизм регулярных выражений javascript

Я написал следующее регулярное выражение:/\D(?!.*\D)|^-?|\d+/g

Я думаю, что это должно работать так:

\D(?!.*\D)    # match the last non-digit
|             # or
^-?           # match the start of the string with optional literal '-' character
|             # or
\d+           # match digits

Но это не так:

var arrTest = '12,345,678.90'.match(/\D(?!.*\D)|^-?|\d+/g);
console.log(arrTest);

var test = arrTest.join('').replace(/[^\d-]/, '.');
console.log(test);

Тем не менее, при игре сPCRE(php)-flavour онлайн вRegex101, Это работает, как я описал.

Я не знаю, думаю ли я, что это должно работать так, как это не работает. Или если есть какой-то шаблон, запрещенный в регулярном выражении javascript.