Вы можете использовать квантификатор для класса символов, затем буквально сопоставить точку и использовать класс символов снова, указав, какие символы вы позволите получить более конкретное соответствие для имени файла.
^[A-Za-z0-9_ -]+\.[a-zA-Z0-9_]+$
Запустите шаблон с якорем, чтобы утверждать начало строки ^
(Если вы используете его внутри класса символов в начале [^
, вы отрицаете класс символов и утверждаете конец строки $
Если вы хотите узнать, есть ли совпадение для имени файла, содержащего символы, которого не должно быть, вы можете использовать:
^[\w.-]+$
Regex demo | Php demo
Например, используйте preg_match и отрицайте его, если хотите знать, что оно не соответствует.
Ваш код может выглядеть следующим образом:
if (!preg_match('/^[\w.-]+$/i', $filename)) {
Примечание возвращаемые значения preg_match:
preg_match () возвращает 1, если шаблон соответствует заданному предмету, 0, если нет,или FALSE, если произошла ошибка.