2009-08-20 5 views
1

Je cherche un bon moyen de vérifier un nombre que l'utilisateur a entré pour la position correcte des virgules optionnelles.Comment puis-je vérifier l'emplacement correct des virgules dans un numéro entré par un utilisateur?

Par exemple

1,000,000.00 = correct 
1000000  = correct 
1,00,000.00 = incorrect 
,100,000  = incorrect 

Il semble donc que je dois vérifier qu'il ya au moins un numéro à gauche et à 3 chiffres à droite de la virgule, ou est-il un moyen regex fais ça?

+0

Qui s'en soucie? Les virgules doivent permettre au lecteur humain de déchiffrer la taille d'un nombre ... pas que les politiciens soient à Washington DC. – xcramps

Répondre

2

Qu'est-ce que vous allez utiliser pour? Ou en d'autres termes, pourquoi s'en soucier? Pourquoi ne pas simplement supprimer toutes les virgules et le convertir en un type numérique?

+0

Ouais, c'est aussi mon sentiment ... cela ressemble étrangement à ce chèque ennuyeux utilisé par les sites bancaires pour vous empêcher d'entrer un nombre sans deux décimales. Bien que je suppose que si vous attendiez du trafic des utilisateurs internationaux, vérifier "10,00" pourrait être utile avant de supprimer les virgules ... – Shog9

+0

J'ai eu environ 1 heure pour implémenter quelque chose dans la validation existante et utilisé quelque chose de similaire au premier répondre ci-dessus Mais je suis d'accord avec votre commentaire et maintenant que j'ai un peu plus de temps pour travailler avec c'est ce que je vais mettre en œuvre. – Matt

5
/^(?:\d+|\d{1,3}(?:,\d{3})*)(?:\.\d+)?$/ 
2

Découvrez ce site: http://blog.stevenlevithan.com/archives/commafy-numbers

est ici l'extrait de code:

String.prototype.commafy = function() { 
    return this.replace(/(^|[^\w.])(\d{4,})/g, function($0, $1, $2) { 
     return $1 + $2.replace(/\d(?=(?:\d\d\d)+(?!\d))/g, "$&,"); 
    }); 
} 

Number.prototype.commafy = function() { 
    return String(this).commafy(); 
} 

Ce que vous pouvez faire est de remplacer toutes les virgules et utiliser ce code pour ajouter les virgules vous.

Espérons que cela aide.

+0

Un long chemin pour valider, mais encore une fois, pourquoi * pas * aller de l'avant et le réparer? Vous validez uniquement la mise en forme, pas le contenu. +1 pour avoir pensé hors de la boîte. –

0

Here’s a pattern qui répond à votre question. Il y a aussi beaucoup d'autres modèles liés aux nombres, y compris ceux qui sont maintenables - quelque chose que personne ne semble jamais s'inquiéter.