Bir numara 5 basamaktan oluşur olmadığını kontrol etmek için düzenli ifade php

4 Cevap php

Bir sayı sadece 5 basamaktan oluşan olup olmadığını kontrol etmek için normal bir ifade yazmak nasıl?

4 Cevap

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