İstediğiniz kalıp şuna benzer ( rubular.com'a bakın ):
^[a-zA-Z0-9_.-]*$
Açıklama:
^
hat çapasının başlangıcıdır
$
hattın sonu çapası
[...]
bir karakter sınıfı tanımıdır
*
"sıfır veya daha fazla" tekrar
Düz çizgi -
karakter sınıfı tanımındaki son karakterdir, aksi takdirde farklı bir anlamı vardır (yani aralık). .
Ayrıca farklı bir anlam dışında karakter sınıfı tanımları vardır, ancak içeride, sadece bir edebi var.
Referanslar
PHP'de
İşte bu kalıbı nasıl kullanabileceğinizi gösteren bir pasaj:
<?php
$arr = array(
'screen123.css',
'screen-new-file.css',
'screen_new.js',
'screen new file.css'
);
foreach ($arr as $s) {
if (preg_match('/^[\w.-]*$/', $s)) {
print "$s is a match\n";
} else {
print "$s is NO match!!!\n";
};
}
?>
Yukarıdaki baskılar ( ideone.com'da görüldüğü gibi ):
screen123.css is a match
screen-new-file.css is a match
screen_new.js is a match
screen new file.css is NO match!!!
\w
Bunun yerine deseninin biraz farklı olduğuna dikkat edin . Bu, "kelime karakteri" için karakter sınıfıdır.
API referansları
Özelliklerle ilgili not
Bu sizin spesifikasyonunuza uygun görünüyor, ancak bunun .....
, vb. Gibi şeylerle eşleşeceğini unutmayın , bunlar sizin istediğiniz gibi olabilir veya olmayabilir. Hangi kalıbı eşleştirmek istediğinizi daha belirgin hale getirebilirseniz, normal ifade biraz daha karmaşık olacaktır.
Yukarıdaki normal ifade, boş dizeyle de eşleşir. En az bir karaktere ihtiyacınız varsa, tekrarlama için (sıfır veya +
daha fazla) yerine (bir veya daha fazla) kullanın *
.
Her durumda, spesifikasyonunuzu daha fazla netleştirebilirsiniz (normal ifade sorusu sorduğunuzda her zaman yardımcı olur), ancak umarım yukarıdaki bilgiler göz önüne alındığında kalıbı nasıl yazacağınızı da öğrenebilirsiniz.