8768 sujets

Développement web côté serveur, CMS

Bonjour,

Pouvez-vous me dire quelles sont toutes les différences entre ces deux expressions régulières svp?
$pattern = '/[^a-z_\-0-9]/i';
preg_match($pattern, $val, $matches);

et
$pattern = '/^[a-z0-9-_\d]+$/';
preg_match($pattern, $val, $matches);

Merci d'avance,
Modérateur
Bonjour, il y a une erreur dans la seconde: /^[a-z0-9-_\d]+$/ il manque un \ après le 9: /^[a-z0-9\-_\d]+$/. Ensuite \d est inutile, car il répète 0-9.

La première match un seul caractère, autre que les caractères a à z, A à Z, 0 à 9, _ ou -

La seconde match une ligne qui n'est que composée que des caractères a à z, 0 à 9, _ ou -,

OK:
salut-toi
0219_ok

Pas OK:
Salut
salut toi
Merci beaucoup! Je souhaite accepter uniquement les lettres minuscules, chiffres, tirets et underscores, pas d'espace autorisé.

Du coup, la seconde avec tes corrections correspond à mes besoins :
$pattern = '/^[a-z0-9\-_]+$/';