Algum padrão de regex está quebrando o mecanismo de regex javascript

Eu escrevi o seguinte regex:/\D(?!.*\D)|^-?|\d+/g

Eu acho que deveria funcionar assim:

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

Mas isso não acontece:

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

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

No entanto, ao reproduzi-lo comPCRE(php)-sabor online emRegex101. Funciona como eu descrevi.

Não sei se acho que deve funcionar de uma maneira. Ou se houver algum padrão não permitido no javascript regex-flavor.

questionAnswers(2)

yourAnswerToTheQuestion