Voici ma règle pour le nom du projet:
$this->validate(request(), [
'projectName' => 'required|regex:/(^([a-zA-z]+)(\d+)?$)/u',
];
J'essaie d'ajouter la règle telle qu'elle doit commencer par une lettre de a-z
ou A-z
et peut se terminer par des chiffres mais pas du tout.
Valeurs valides pour le nom du projet:
myproject123
myproject
MyProject
Valeurs non valides pour le nom du projet:
123myproject
!myproject
myproject 123
my project
my project123
J'ai essayé mon regex en ligne:
https://regex101.com/r/FylFY1/2
Cela devrait fonctionner, mais je peux réussir la validation même avec project 123
.
[~ # ~] update [~ # ~]: Cela fonctionne, je viens de le tester dans le mauvais contrôleur, je suis désolé ... mais peut-être que cela aidera les autres
Votre règle est bien faite [~ # ~] mais [~ # ~] vous devez savoir, spécifier des règles de validation avec des regex séparées par un pipeline peut conduire à un comportement indésirable.
La manière appropriée de définir une règle de validation devrait être:
$this->validate(request(), [
'projectName' =>
array(
'required',
'regex:/(^([a-zA-Z]+)(\d+)?$)/u'
)
];
Vous pouvez lire sur le document officiel :
regex: motif
Le champ en cours de validation doit correspondre à l'expression régulière donnée.
Remarque: Lorsque vous utilisez les modèles regex/not_regex, il peut être nécessaire de spécifier des règles dans un tableau au lieu d'utiliser des délimiteurs de canal , en particulier si l'expression régulière contient un personnage de pipe.