PHP negatif olmayan tamsayılar maç için düzenli ifade?

1 Cevap php

Ben preg_match'in tarafından aşağıdaki regexp () ile çalışmak için almak gibi:

@^(?:[1-9][0-9]*)|0$@

Oysa o maçlar bu garip '-0', hayır vardır düşünüyor '-' regexp at all izin verdi. Neden?

: | Ne daha garip olduğunu size bölü parçaları anahtarı olduğunu

@^0|(?:[1-9][0-9]*)$@

Tüm negatif gibi '-2' tamsayılar ve '-10', vb maçları

Ben burada ne eksik? Negatif olmayan tamsayı için daha iyi sıradanifade?

1 Cevap

Sizin regex: @^(?:[1-9][0-9]*)|0$@

  1. says match those number that start with 1-9 followed by any digit 0 or more times OR
  2. ile biten bu numaraları eşleşen 0.

Açıkça -0 karşılar durum 2 yüzden maç olsun.

İhtiyacınız olan regex: @^(?:[1-9][0-9]*|0)$@

lider olmadan 0 veya başka +ve sayısını hangi maçlar 0. Mark bahseder gibi ^\d+$: 0'lar izin iseniz giriş kullanabileceğiniz hangi basamak varsa o zaman kontrol için ihtiyaç vardır.

Ayrıca neden sadece böyle basit bir kontrol yapmak değil:

if($input >= 0)
 // $input is non -ve.