sur mon php j'utilise preg_match
pour valider les textes saisis.
if(preg_match('/^[a-zA-Z0-9]+$/', $firstname)) {
}
Mais cela n'autorise que les caractères alphanumériques et ne permet pas les espaces. Je veux autoriser les espaces, alpha et numérique. et point (.) et tiret (-)
S'il vous plaît, aidez-moi ici? Merci d'avance.
Utilisation
preg_match('/^[a-z0-9 .\-]+$/i', $firstname)
Si vous souhaitez non seulement autoriser ASCII, utilisez alors propriétés Unicode :
preg_match('/^[\p{L}\p{N} .-]+$/', $firstname)
\p{L}
est n'importe quelle lettre en n'importe quelle langue , correspond également aux caractères chinois, hébreu, arabe, ...
\p{N}
tout type de caractère numérique (signifie également par exemple des chiffres romains)
si vous voulez vous limiter aux chiffres, utilisez \p{Nd}
Le seul point difficile ici est le tiret.
Pour les espaces et les points, vous pouvez simplement les ajouter à votre classe de personnage, comme ceci:
'/^[a-zA-Z0-9 .]+$/'
Facile.
Le tiret est légèrement plus difficile car les tirets ont une signification particulière dans une classe de caractères comme celle-ci (comme vous le savez déjà, ils sont utilisés pour des plages de caractères comme a-z
). Afin de spécifier un trait d'union dans une classe de caractères, il doit être le premier caractère de la classe (c'est-à-dire qu'il ne doit pas être entre deux caractères, sinon il est traité comme un marqueur de plage de caractères).
Votre expression serait donc:
'/^[-a-zA-Z0-9 .]+$/'
J'espère que ça t'as aidé.