Bir sayı sadece 5 basamaktan oluşan olup olmadığını kontrol etmek için normal bir ifade yazmak nasıl?
Bu düzenli ifade güzel çalışması gerekir:
/^\d{5}$/
Bir dize sadece 5 rakamdan oluşan bu kontrol edecektir.
/
ayraç. Bu başlangıç ve düzenli bir ifadenin sonunda. (Kullanıcı tanımlı, size sınırlayıcı olarak herhangi bir karakter kullanabilirsiniz).
^
dize çapa bir başlangıç.
\d
bir karakter sınıfı eşleştirme sadece hanedir [0-9]
için bir kestirme olduğunu.
{5}
son grubu ya da karakteri 5
kez tekrar gelir.
$
dize çapa sonudur.
/
kapanış ayraç.
Eğer sayı 0'dan başlamaz emin olmak istiyorsanız, aşağıdaki varyantı kullanabilirsiniz:
/^[1-9]\d{4}$/
Nerede:
/
ayraç. Bu başlangıç ve düzenli bir ifadenin sonunda. (Kullanıcı tanımlı, size sınırlayıcı olarak herhangi bir karakter kullanabilirsiniz).
^
dize çapa bir başlangıç.
[1-9]
9
için 1
arasında değişen bir karakter sınıfı eşleşen hanedir.
\d
bir karakter sınıfı eşleştirme sadece hanedir [0-9]
için bir kestirme olduğunu.
{4}
son grubu ya da karakteri 4
kez tekrar gelir.
$
dize çapa sonudur.
/
kapanış ayraç.
Note that using regular expressions for this kind of validation is far from being ideal.
Bu regex emin sayı sıfır ile başlamıyor yapacak:
if(preg_match('/^[1-9]\d{4}$/', $number))
echo "Number is 5 digits\n";
else
echo "Number is not five digits\n";
Ama neden is_numeric()
a> yerine kullanmak değil mi?
if(is_numeric($number) && $number >= 10000 && $number <= 99999)
echo "Number is 5 digits\n";
else
echo "Number is not five digits\n";
Yoksa bile sadece tek bir tamsayı değeri vardır emin olmak için bir tam sayıya çevirebilirsiniz:
if(strval(intval($number)) === "$number" && $number >= 10000 && $number <= 99999)
echo "Number is 5 digits\n";
else
echo "Number is not five digits\n";
Bu deneyin:
^[0-9]{5}$
^
ve $
işaretlemek başlar ve tarif karakterler [0-9]
5 kez tekrar edilmelidir dize sonu. Yani bu sadece maçı tam 5 basamak ile sayılar (ama yine de olabilir 00000
). Eğer 10.000-99.999 sadece sayıları izin vermek istiyorsanız:
^[1-9][0-9]{4}$
Ve 5 basamak (0-99999) için herhangi bir sayı kadar izin istiyorum:
^(?:0|[1-9][0-9]{0,4})$
(?:
expr
)
olmayan bir sıfır önde gelen rakam ile sıfır ve diğer sayılar arasındaki münavebe için kullanılan gruplama sadece olmayan bir yakalama olduğunu.
Regexpi kullanarak, ama umarım hızlı olmasa da:
$var = trim($var);
if(strlen($var) == 5 && ctype_digit($var))
{
//
}
EDIT: Added trim function. It's important! It removes spaces so that strlen() function works as expected. Also it makes sure $var is a STRING. You need to pass a string to ctype_digit. If you pass say, an integer it will return false!!!