Evet?
Dürüst olmak gerekirse, ne soruyorsun? Neden bunu test değil mi?
Ancak, bazı sorular, onu geliştirmek önerileri isterseniz:
- Ne bu regex kontrol ediyor?
- Neden izin verilen karakter gibi büyük bir dizi var mı?
- Neden
/\w/
yerine /0-9a-zA-Z_/
kullanımı değil mi?
- Neden
()
s şeyi var mı? Sen zaten her şey var, çünkü her şeyi yakalamak gerekmez, onlar grup şey için gerekli değildir.
Ne yapacağını ayrı uzunluğunu kontrol edin ve sonra herhangi bir bad karakter olup olmadığını görmek için bir regex karşı kontrol edilir. Iyi karakterler listeniz sadece bunu bu şekilde yapmak daha kolay olabilir ki yeterince büyük gibi görünüyor. Ama sizin için ne yaptığınızı bağlı olabilir.
DÜZENLEME: PHP tam Perl değildir PCRE kütüphanesini kullanır ve PCRE'nin yılında, \w
çünkü Şimdi biliyorum ki bu PHP-merkezli, /\w/
güvenlidir olacak {[(2 )]} Unicode sözcük karakterlerini maç. Böylece, neden uzunluğu kontrol ve geçersiz karakterler vardır sağlamak değil:
if(strlen($string) >= 4 && preg_match('[\s~\\]', $string) == 0) {
# valid password
}
Alternatif olarak, az kullanılan POSIX karakter sınıfı [[:graph:]]
kullanın. Bu hemen hemen aynı PHP Perl yaptığı gibi çalışması gerekir. [[:graph:]]
ne istediğiniz gibi geliyor alfanümerik veya noktalama karakteri, maçlar ve [[:^graph:]]
tersini eşleşmesi gerekir. Tüm karakterler grafiği maç olmadığını test etmek için:
preg('^[[:graph:]]+$', $string) == 1
Herhangi bir karakter grafik eşleşmiyor test etmek için:
preg('[[:^graph:]]', $string) == 0