2010-12-13 4 views
1

J'essaie d'écrire une expression régulière pour valider les noms de fichiers sur un système de fichiers.PHP Expression régulière

Exemples de noms de fichiers valides sont

  • tapa_newcougar_org.png
  • tapa_lamborghini-talk_com.png
  • tapa_clubfrontier_org.png

La logique sous-jacente est valide l'image commence par tapa a suivi par un trait de soulignement. Ensuite, le nom de domaine suivi _ tld (com, org, net)

Merci

Répondre

5
preg_match('/^tapa_[a-z0-9-_]+?_(com|org|net)\.png$/', $string); 

Cela devrait le faire (testé). Si vous voulez faire correspondre les lettres majuscules trop, ajoutez le i (insensible à la casse) drapeau comme ceci:

preg_match('/^tapa_[a-z0-9-_]+?_(com|org|net)\.png$/i', $string); 

Pour une représentation graphique de la façon dont cela fonctionne, vous pouvez le coller ici: http://strfriend.com

+0

Je ne fais pas regex PHP, donc je ne sais pas ce qui le rend insensible à la casse (et l'OP n'a jamais précisé qu'il devrait être), mais vous ne correspondra pas à si la le nom de fichier a des majuscules dedans. –

+0

Oui, bon point. Je vais ajouter ça. – Jonah

0

^tapa_[a-zA-Z0-9\-_]+_(com|org|net)\.png$ devrait travailler pour vous.

+1

Ceci est trop gourmand, le. + Correspondra à tout, y compris com | org | net. En outre, aucun type de fichier? –

1

Vous pouvez essayer:

preg_match('/^tapa_.+_(com|org|net)\.png$/', $filename);