8791 sujets

Développement web côté serveur, CMS

Bonsoir,
je galère sur un regex Smiley ohwell

Je voudrai que ma fonction verifDossier me renvoie true si le nom de dossier est correct et false dans le cas contraire.

Le nom du dossier peut contenir des lettres minuscules majuscules allant de a à z, des espaces (je vire les espaces plus loin avec trim), des chiffres, des underscore. Tout le reste est à exclure.

Exemple de nom valide: "Je_test un nom 2 dossier" (sans les guillemets)


Et une autre petite question au passage: Est-ce que les majuscules sont à proscrire pour les noms de dossier ?


function VerifDossier(nom){
   var exp = new RegExp("([a-zA-Z_0-9\s])*","g");
   if ( exp.test(nom) )
   { 
      return true;
   }
   else
   {
      return false;
   }
}


Merci d'avance !
Modifié par NecPlusUltra (05 Apr 2010 - 23:40)
Salut,

ben comme tu parles de trim et que cette fonction n'existe pas nativement en JavaScript je suppose que tu parles bien de PHP... sauf que le code que tu utilises (new RegExp) est destiné au JavaScript. Smiley murf

Dont en PHP tu pourrais faire :
function isNomValide($nom) {
	$pattern = '#[a-zA-Z0-9_\s]#';
	return preg_match($pattern, $nom);
}
A noter que pour ne pas avoir de problèmes quel que soit le serveur et pour se simplifier la vie il est préconisé de tout mettre en minuscules et sans espaces.

A voir en complément :
preg_match
regexp php sur Mediabox

Sinon :
* trim ne va supprimer que les espaces au début et à la fin
* Alsacréations n'est pas le bon forum pour débuter. Smiley cligne
Modifié par Heyoan (05 Apr 2010 - 22:53)
je suis pas expert mais quelques remarques de base déjà.

1/le * a la fin tu match un nom vide comme bon.
2/ ^(debut de chaine $ (fin de chaine) manquent là tu matches aussi %_è"-è-"(-("£HJGJHG
vu qu'une partie qui correspond suffit.
3/ \s ne doit pas être employé tel quel dans le [] mais \\s

sinon trim en javascript n'existe pas nativement donc c'est un peu flou. n'oublie pas que /s vas te coller des tabulations et autres sauts de ligne. un trim (un vrai) ne corrigeras pas ça

var exp = new RegExp("^([a-zA-Z_0-9 ])+$","g"); 

ou
var exp = new RegExp("^([a-zA-Z_0-9\\s])+$","g"); 

me paraissent donc déjà un peu mieux et match ton exemple.

j'ai testé en javascript. c'en est a priori.

je penses qu'on peut laisser les majuscules. certaines conventions en font usage.
Modifié par CPascal (05 Apr 2010 - 23:16)
'lut CPascal, Smiley smile

CPascal a écrit :
je penses qu'on peut laisser les majuscules. certaines conventions en font usage.
Oui... ce que je voulais dire par se simplifier la vie c'est que comme Windows est insensible à la casse tout peut très bien fonctionner en local et une fois en ligne on ne comprend pas pourquoi ça ne marche plus... et c'est simplement parce que les serveurs Linux sont, eux, sensibles à la casse.
Je viens de tester l'exemple de Pascal à l'instant et ça marche nickel !

Merci de votre aide.

a écrit :
* Alsacréations n'est pas le bon forum pour débuter.


Je viens ici parce que je sais que les réponses sont rapides et très souvent juste.
Modifié par NecPlusUltra (05 Apr 2010 - 23:29)
NecPlusUltra a écrit :
Je viens de tester l'exemple de Pascal à l'instant et ça marche nickel !
Alors c'est que tu t'es trompé de salon et que tu aurais dû poster dans celui consacré au JavaScript.

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne
@heyoan:salut Smiley smile , je suis bien sur d'accord avec toi et avant je faisais comme ça. c'est clairement moins source de confusion lors d'une mise en ligne. ça empeche certains "tiens ça marche pas en prod!" assez idiot.

ceci dit dans de la programmation objet en PHP ( et en POO en général ) les gens aiment bien la convention avec une Maj juste au debut de chaque mot sauf le premier. notamment pour les noms de classes. du coup en pratique j'ai vu beaucoup de majuscules trainées de ci de là.
Modifié par CPascal (05 Apr 2010 - 23:53)