Regex pour trouver un nom de fichier valide
-
06-07-2019 - |
Question
Je veux vérifier si une chaîne est un nom de fichier (nom DOT ext) ou non.
Le nom du fichier ne peut pas contenir /? *:; {} \
Pourriez-vous s'il vous plaît me suggérer l'expression regex à utiliser dans preg_match ()?
La solution
Voilà:
"[^/?*:;{}\\]+\\.[^/?*:;{}\\]+"
"Un ou plusieurs caractères ne faisant pas partie de ceux-là, puis un point, puis quelques autres caractères ne faisant pas partie de ceux-ci."
(Tant que vous êtes sûr que le point est vraiment nécessaire - sinon, c'est simplement: "" [^ /? * :; {} \\] +"
Autres conseils
$a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc');
^ ... $ - begin and end of the string
[^ ... ] - matches NOT the listed chars.
La regex serait quelque chose comme (pour une extension de trois lettres):
^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$
PHP nécessite des barres obliques inversées et preg_match ()
des barres obliques, ainsi:
$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";
Pour faire correspondre des noms de fichier tels que "hôtes"
ou ".htaccess", utilisez cette expression légèrement modifiée:
^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$
Ci-dessous la regex utilisée pour vérifier le nom de fichier Unix dans un programme Golang:
reg := regexp.MustCompile("^/[[:print:]]+(/[[:print:]]+)*<*>quot;)