2009-08-02 3 views
2

Ich möchte 2333444 in 2333444 umwandeln, aber mir ist nicht klar, wie der Ausdruck sich von rechts nach links im Gegensatz zu umgekehrt bewegen kann. Ich schreibe Perl, aber jede RegEx-Syntax ist in Ordnung, ich werde es konvertieren, wenn Sie sich mit Java oder Javascript wohler fühlen.Was wäre die Regex, um Kommas zu langen Ziffern für die Lesbarkeit hinzuzufügen?

+6

Gibt es einen bestimmten Grund, dass Sie reguläre Ausdrücke verwenden möchten, um dies zu erreichen? – meandmycode

+2

Duplikat von: http://stackoverflow.com/questions/721304/insert-commas-into-number-string – sth

+1

Verwenden Sie Bill oder Brians Antworten zum Anwenden der Standard-Zahlenformatierungsbibliothek, anstatt zu versuchen, ein perfektes Rad neu zu erfinden . –

Antwort

4
s/(?<=\d)(?=(\d\d\d)+(?!\d))/,/g 
4

Auschecken Number::Format. Dieses Modul bietet eine Vielzahl von Lösungen zur Zahlenformatierung. z.B. für das, was Sie benötigen

format_number(1234567.89, 2)   

‚1,234,567.89‘

Ausbeuten Vergessen Sie nicht, dass das für Sie, was Sie versuchen locale-spezifischen zu tun ist, und dieses Modul zu behandeln. Eine einfache Regexp-Lösung macht das nicht alleine.

+1

Nicht sicher, warum jeder diese (und die nächste) Antwort markiert? Dies ist keine Antwort auf meine Frage. Es ist eine alternative Lösung, die, wie es passiert, für mich nicht funktioniert, da ich sowohl auf dem Client als auch auf dem Server arbeite. Seit wann regEx "erfindet das Rad neu". Ich schätze die Tatsache, dass es eine Bibliothek gibt, die das in Perl macht, aber das ist nicht das, was ich gefragt habe. –

3

Sie wollen die Number:Format Erweiterung verwenden, kein regulärer Ausdruck. Sie möchten THOUSANDS_SEP= ',' angeben.

2

s/(? < = \ d) (? = (\ D \ d \ d) + (?! \ D)) /,/g

das wird es in Perl-Stil tun Regexs

Verwandte Themen