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 ()?

Était-ce utile?

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;)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top