PHP Währung Regular Expression
Frage
Ich versuche, ein Stück regex zu finden einen Währungswert entsprechen.
Ich möchte nur Zahlen und 1 Nachkommastelle dh
entsprechenerlaubt
- 10
- 100
- 100.00
Nicht erlaubt
- Alpha Charaktere
- 100,00
- +/- 100
Ich habe suchen und versuchte, ganz wenige ohne Erfolg.
Die Hoffnung können Sie raten
Lösung
if (preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $subject))
{
# Successful match
}
else
{
# Match attempt failed
}
Randnotiz : Wenn Sie einschränken möchten, wie viele Dezimalstellen Sie möchten, können Sie etwas tun:
/^[0-9]+(?:\.[0-9]{1,3})?$/im
So
100.000
wird übereinstimmen, während
100.0001
wird nicht.
Wenn Sie weitere Hilfe benötigen, schreiben Sie einen Kommentar.
PS Wenn Sie können, um die Anzahl Formatierer oben geschrieben verwenden. Native Funktionen sind immer besser (und schneller), ansonsten diese Lösung Ihnen gute Dienste leisten wird.
Andere Tipps
Wie wäre es dieses
if (preg_match('/^\d+(\.\d{2})?$/', $subject))
{
// correct currency format
} else {
//invalid currency format
}
Sie mögen vielleicht andere Alternativen zu prüfen, einen regulären Ausdruck zu verwenden.
Zum Beispiel gibt es die NumberFormatter
-Klasse, die flexible Zahl bereitstellt und Währung Parsen und Formatierung , mit eingebauter Unterstützung der Internationalisierung.
Es ist eingebaut in PHP 5.3 und höher und ist als eine Erweiterung auf frühere Versionen von PHP 5 zur Verfügung.
Versuchen Sie, diesen regulären Ausdruck:
^(?:[1-9]\d+|\d)(?:\.\d\d)?$