Einiges Regex-Muster bricht die JavaScript-Regex-Engine.

Ich habe folgenden regulären Ausdruck geschrieben:/\D(?!.*\D)|^-?|\d+/g

Ich denke, es sollte so funktionieren:

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

Aber das tut es nicht:

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

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

Allerdings, wenn Sie es mit @ spielPCRE(php)-Geschmac online bei Regex101. Es funktioniert wie beschrieben.

Ich weiß nicht, ob ich denke, dass es so funktionieren sollte, dass es nicht funktioniert. Oder wenn es ein Muster gibt, das in Javascript nicht erlaubt ist.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage