since3-portal/modules/shared/lib/parse-decimal.ts
2026-09-29 16:37:48 +02:00

11 lines
561 B
TypeScript

// Deutsches Format mit Tausenderpunkten ("1.000", "1.234,50") oder schlicht ("12,5", "12.50").
// Mehrdeutiges wie "1.5,00" oder mehr als 2 Nachkommastellen ergibt NaN statt still falsch zu rechnen.
const GROUPED = /^\d{1,3}(\.\d{3})*(,\d{1,2})?$/;
const PLAIN = /^\d+([.,]\d{1,2})?$/;
export function parseDecimalInput(value: string) {
const trimmed = value.trim();
if (GROUPED.test(trimmed)) return Number(trimmed.replace(/\./g, "").replace(",", "."));
if (PLAIN.test(trimmed)) return Number(trimmed.replace(",", "."));
return Number.NaN;
}