Nasıl harflerle en az x sayı maç için regex anlatır?

3 Cevap php

Ben kullanıcı alanını gönderir formu var. Alan harfler, sayılar ve noktalama işaretleri olabilir. Ama ben karakterlerden en az 3 harf olduğundan emin olmak için kontrol etmek istiyorum. Bunu nasıl regex olabilir?

Örneğin,

$string = "ab'c";

Ve ben, gibi bir şey gerekir

if (preg_match("/[a-z]{3}/i", $string))
    print "true";
else
    print "false";

Bu dize bir kesme işareti olsa bile, üç harf bulunur. Bu gerçek test etmelisiniz. Ama nedense, şu an yanlış testleri.

Herhangi bir yardım?

3 Cevap

Nasıl bir harf duyarsız maç hakkında:

([a-z][^a-z]*){3}

3 mektup grupları ve sivil harflerin herhangi bir sayı arar.

You cannot write a regexp that checks for "at least x symbols of a class". Elbette yapabilirsin

preg_match_all('~([a-z][^a-z]*){3}~', "ab'c")

Daha karmaşık durumlarda, başka bir şey için sınıf değiştirmek ve daha sonra sonuçları karşılaştırın (veya sadece preg_replace dördüncü parametresini kullanın):

preg_replace('~[a-z]~', '', "ab'c", -1, $count);
print_r($count); // prints "3"

Bu normal ifade deneyin:

^([0-9,]*[A-Za-z]){3}[A-Za-z0-9,]*$

Ayrıca tüm harf olmayan karakterleri kaldırmak ve uzunluğunu kontrol edebilir:

if (strlen(preg_replace('/[^A-Za-z]+/', '', $str)) >= 3) {
    // $str contains at least three letters
}