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!!!