Regex for finding valid filename
The regex would be something like (for a three letter extension):
^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$
PHP needs backslashes escaped, and preg_match()
needs forward slashes escaped, so:
$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";
To match filenames like "hosts"
or ".htaccess"
, use this slightly modified expression:
^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$
Here you go:
"[^/?*:;{}\\]+\\.[^/?*:;{}\\]+"
"One or more characters that aren't any of these ones, then a dot, then some more characters that aren't these ones."
(As long as you're sure that the dot is really required - if not, it's simply: "[^/?*:;{}\\]+"
$a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc');
^ ... $ - begin and end of the string
[^ ... ] - matches NOT the listed chars.