Normal ifadeler kullanma

4 Cevap php

Ne bu regexp ile yanlış? Ben $ isim sadece harf-sayı yapmak gerekir. Şimdi tüm çalışma gibi görünüyor doens't.

 if (!preg_match("/^[A-Za-z0-9]$/",$name)) {
  $e[]="name must contain only letters or numbers";
 }

4 Cevap

Aksi takdirde sadece bir karakter sağlayacak bir nicelik gerekir. Örneğin, bir veya daha fazla karakter kullanmak olmalıdır gerektirir + için:

/^[A-Za-z0-9]+$/

Düzenli ifade sadece tek bir karakteri tarif etmez. Izin vermek için bir quantifier + gibi kullanımı Ya [A-Za-z0-9], bir ya da daha fazla kez tekrar edilmektedir:

if (!preg_match("/^[A-Za-z0-9]+$/",$name))

Ya da ifadeyi ters ve alfanümerik olmayan karakterleri aramak ([^A-Za-z0-9] tamamlayıcısıdır [A-Za-z0-9]) yapabilirsiniz:

if (preg_match("/[^A-Za-z0-9]/",$name))

Regexes yükü olmadan istediğinizi yapacak olan diğer fonksiyonlara bakmak unutmayın. Bu durumda, ctype_alnum kullanabilirsiniz.

Tam sizin ifade ne zaman bilmiyorum, bazen bir araç ile test etmek olur. Belki deneyebilirsiniz Regex Coach: http://www.weitz.de/regex-coach/ :)