var tval = val.replace(/\s| | |\u00A0| |\u202f| | |\u2009|´|'|\./g,"");
entferne ich alle mir bekannten Tausendertrennzeichen aus einer Zahl.
Hm. jetzt hatte ich doch geglaubt, das Problem sei gelöst… und sehe irre kompliziertes Zeug.
Zuerst wäre da die Frage, wo denn die "Zahl" (es ist ein String) herkommt?
Dann scheint die Frage auf, warum Du nicht ganz stumpf mit
var dec = str.replace( /[^0-9.]/g, '' );
alle Zeichen rausziehst, die Du in einer "Zahl" nicht erwartest. Wenn da Oktal- oder Hexadezimalmüll drin steht, dann hat sich womöglich jemand bei der Eingabe ganz gewaltig vertan. Auch hab ich noch nie eine Oktal- oder Hexadezimalzahl mit Kommastellen oder Tausendertrennzeichen gesehen…
Kommen die „Strings mit vermuteten Zahlenangaben“ etwa via Request von fremden Webseiten?
Dann sieh Dir mal das hier an:
function mkCleanNumber( s ) {
return s.replace( /&#.*;/g, '' ).replace( /[^0-9.]/g, '' );
}
str='123\u00A0456';
console.log( str + ' : ' + mkCleanNumber( str ) );
str='123 456'
console.log( str + ' : ' + mkCleanNumber( str ) );
str='123 456';
console.log( str + ' : ' + mkCleanNumber( str ) );
Ausgaben:
123 456 : 123456
123 456 : 123456
123 456 : 123456