Algún patrón regex está rompiendo el motor de JavaScript regex

Escribí la siguiente expresión regular:/\D(?!.*\D)|^-?|\d+/g

Creo que debería funcionar de esta manera:

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

Pero no lo hace:

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

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

Sin embargo, cuando lo juegas conPCRE(php)-sabor en línea enRegex101. Funciona como lo describí.

No sé si creo que debería funcionar de una manera que no funciona. O si hay algún patrón no permitido en javascript regex-flavour.

Respuestas a la pregunta(2)

Su respuesta a la pregunta