PHP
Quantifiers
*, +, ? ve {} ile bir desenin kaç kez tekrar edeceğini öğrenirsin.
Quantifier'lar: *, +, ?, {n}
Bir öğenin kaç kez tekrar edeceğini söyleyen işaretlere quantifier denir. En yaygın dördü:
* sıfır veya daha fazla. ab*c deseni ac, abc, abbbbc ile eşleşir.
+ bir veya daha fazla. ab+c en az bir b ister, ac ile eşleşmez.
? sıfır veya bir (isteğe bağlı). ab?c hem ac hem abc ile eşleşir.
{n,m} n ile m arası tekrar. a{2,4} en az 2 en çok 4 a.
Açgözlü ve tembel eşleşme
Quantifier'lar varsayılan olarak açgözlüdür: mümkün olan en uzun eşleşmeyi alırlar. /".+"/ deseni "elma" ve "armut" arasındaki tüm metni tek parça olarak alır.
Soru işareti ekleyerek tembel yapabilirsin: /".+?"/ en kısa eşleşmeyi alır, yani ilk "..." çiftini.
Tırnak veya etiket arası içerik alırken tembel davranmak çoğu zaman daha güvenlidir.
Uygulama Telefon biçimini doğrula
isPhoneNumber(string $str): bool fonksiyonunu yaz. 05XX XXX XX XX biçimini /^05\d{2}\s\d{3}\s\d{2}\s\d{2}$/ deseniyle doğrulasın; eşleşirse true, yoksa false döndürsün. preg_match sonucunu === 1 ile karşılaştır. Ardından gelen üç echo çağrısı zaten yazılı.
Örnek çözümü göster
bool { return preg_match("/^05\d{2}\s\d{3}\s\d{2}\s\d{2}$/", $str) === 1; } yaz.
Örnek çözüm:
<?php
// isPhoneNumber: 05XX XXX XX XX biçimini quantifier'larla doğrula
// isPhoneNumber fonksiyonunu tanımla
function isPhoneNumber(string $str): bool {
return preg_match("/^05\d{2}\s\d{3}\s\d{2}\s\d{2}$/", $str) === 1;
}
echo isPhoneNumber("0555 123 45 67") ? "geçerli\n" : "geçersiz\n";
echo isPhoneNumber("12345") ? "geçerli\n" : "geçersiz\n";
echo isPhoneNumber("0555 123 45 6") ? "geçerli\n" : "geçersiz\n";
Kendini test et
-
Bir veya daha fazla rakam
$pattern = "/\d____/";
preg_match($pattern, "Tel: 0555", $matches);
Cevabı göster
$pattern = "/\d+/";
preg_match($pattern, "Tel: 0555", $matches);
-
Quantifier anlamları
- *
- Sıfır veya daha fazla
- +
- Bir veya daha fazla
- ?
- Sıfır veya bir
- {2,4}
- İki ile dört arası
-
a*b deseninde * ne anlama gelir?
- a harfinin tam olarak bir kez
- a harfinin en az bir kez
- a harfinin sıfır veya daha fazla kez
- a harfinin sıfır veya bir kez
Cevabı göster
a harfinin sıfır veya daha fazla kez — Doğru. * sıfır veya daha fazla tekrar demektir.
Sıradaki ders: Yakalama grupları