Frage

Ich versuche, ein Stück regex zu finden einen Währungswert entsprechen.

Ich möchte nur Zahlen und 1 Nachkommastelle dh

entsprechen

erlaubt

  • 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

War es hilfreich?

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)?$
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top