Vous pouvez le faire à l'aide d'une expression régulière :
x = x.replace(/,([^,]*)$/, ".$1");
Cette expression régulière correspond à une virgule suivie de n'importe quelle quantité de texte ne comprenant pas de virgule. La chaîne de remplacement est juste un point suivi de ce qui se trouve après la dernière virgule d'origine. Les autres virgules qui la précèdent dans la chaîne ne sont pas affectées.
Maintenant, si vous convertissez vraiment des nombres formatés en "style européen" (à défaut d'un meilleur terme), vous devrez également vous préoccuper des caractères "." aux endroits où un nombre en "style américain" comporterait des virgules. Je pense que vous voudrez probablement vous en débarrasser :
x = x.replace(/\./g, '');
Lorsque vous utilisez la fonction ".replace()" sur une chaîne de caractères, vous devez comprendre qu'elle retours la chaîne modifiée. Il ne modifie pas la original Cependant, une déclaration telle que :
x.replace(/something/, "something else");
n'a aucun effet sur la valeur de "x".