2009-08-20 1 views
1

Ich suche nach einer guten Möglichkeit, eine Nummer zu überprüfen, die ein Benutzer für die richtige Position von optionalen Kommas eingegeben hat.Wie kann ich nach der korrekten Position von Kommas in einer von einem Benutzer eingegebenen Nummer suchen?

Zum Beispiel

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

So sieht es aus wie ich überprüfen müssen, um zu sehen, dass es mindestens eine Zahl auf der linken Seite und drei Zahlen rechts von dem Komma ist, oder gibt es eine RegEx Weg mach das?

+0

Wen interessiert das? Kommas sollen es dem menschlichen Leser erleichtern zu entziffern, wie groß eine Nummer ist ... nicht, dass Politiker Washington DC kümmert. – xcramps

Antwort

2

Wofür verwenden Sie das? Oder anders ausgedrückt, warum kümmern? Warum nicht einfach alle Kommas ausstreichen und in einen numerischen Typ umwandeln?

+0

Ja, das ist auch mein Gefühl ... das hört sich verdächtig nach diesem lästigen Scheck an, der von Banking-Webseiten verwendet wird, um zu verhindern, dass Sie eine Nummer ohne zwei Dezimalstellen eingeben. Obwohl ich vermute, wenn Sie etwas Verkehr von internationalen Benutzern erwarteten, könnte das Überprüfen auf "10,00" nützlich sein, bevor Sie die Kommas entfernen ... – Shog9

+0

Ich hatte ungefähr 1 Stunde, um etwas in der vorhandenen Bestätigung zu implementieren und verwendete etwas, das dem ersten ähnlich ist antworte oben Aber ich stimme deinem Kommentar zu und jetzt, da ich ein bisschen mehr Zeit habe, um damit zu arbeiten, werde ich das umsetzen. – Matt

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

Schauen Sie sich diese Website: http://blog.stevenlevithan.com/archives/commafy-numbers

Hier ist der Code-Schnipsel:

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(); 
} 

Was können Sie tun, ist es, alle Kommas ersetzen und dann diesen Code verwenden, um sich in den Kommas hinzuzufügen.

Hoffe, dass hilft.

+0

Ein bisschen weit weg um zu validieren, aber dann wieder, warum * nicht * weitermachen und es reparieren? Sie validieren nur die Formatierung, nicht den Inhalt. +1 für das Denken aus der Box. –

0

Here’s a pattern das beantwortet Ihre Frage. Es gibt auch viele andere zahlenbezogene Muster, einschließlich solcher, die wartbar sind - etwas, um das sich niemand jemals Sorgen zu machen scheint.