PHP Döviz Düzenli İfade

4 Cevap php

Ben bir para birimi değeri ile eşleştirmek için regex bir parça bulmaya çalışıyorum.

Ben sadece sayıları ve 1 ondalık ie maç istiyoruz

Allowed

  • 10
  • 100
  • 100.00

Not Allowed

  • Alpha Karakterler
  • 100,00
  • + / - 100

Ben herhangi bir şans olmadan epeyce arama ve denedim.

Eğer tavsiyelerde Umut

4 Cevap

if (preg_match('/^[0-9]+(?:\.[0-9]+)?$/', $subject))
{
    # Successful match
}
else
{
    # Match attempt failed
}

Side note: İstediğiniz kaç ondalık kısıtlamak istiyorsanız, böyle bir şey yapabilirsiniz:

/^[0-9]+(?:\.[0-9]{1,3})?$/im

Bu yüzden

100.000

, maç oysa

100.0001

alışkanlık.

Eğer daha fazla yardıma ihtiyacınız varsa, bir yorum gönderin.

PS Eğer, yukarıda yayınlanmıştır sayı formatlayıcıyı kullanabilirsiniz. Yerli fonksiyonları her zaman daha iyi (ve hızlı), aksi takdirde bu çözüm size iyi hizmet edecek.

Buna ne dersiniz

if (preg_match('/^\d+(\.\d{2})?$/', $subject))
{
   // correct currency format
} else {
  //invalid currency format
}

Bir regex kullanarak diğer alternatifler düşünebilirsiniz.

Örneğin, uluslararası destek inşa ile, NumberFormatter class, which provides flexible number and currency parsing ve formatting var.

PHP 5.3 yerleşik ve daha sonra, ve PHP 5 önceki sürümlerinde bir uzantısı olarak kullanılabilir oluyor.

Bu normal ifade deneyin:

^(?:[1-9]\d+|\d)(?:\.\d\d)?$