Comment puis-je valider une chaîne pour autoriser uniquement les caractères alphanumériques-t-il?
Comment puis-je valider une chaîne à l'aide des Expressions Régulières pour autoriser uniquement les caractères alphanumériques-t-il?
(Je ne veux pas de permettre à tous les espaces de soit).
Vous devez vous connecter pour publier un commentaire.
Utiliser l'expression suivante:
ie:
Dans .NET 4.0, vous pouvez utiliser LINQ:
yourText.All
va cesser de remplir et de retourner lafalse
la première foischar.IsLetterOrDigit
rapportsfalse
puisque le contrat deAll
ne peut pas être remplie alors.Note! ce ne répondez pas à un contrôle strict des caractères alphanumériques (qui généralement est: A-Z, a-z et 0-9). Cette réponse permet de personnages comme
åäö
.Mise à jour 2018-01-29
La syntaxe ci-dessus ne fonctionne que lorsque vous utilisez une méthode unique qui n'a qu'un seul argument de type correct (dans ce cas
char
).À utiliser plusieurs conditions, vous avez besoin d'écrire comme cela:
char.IsLetterOrDigit('ก')
sera de retourtrue
. csharppad.com/gist/f96a6062f9f8f4e974f222ce313df8cachar.IsWhiteSpace
est là. Peut-on utiliser plusieurs conditions (AND
ouOR
) quelque chose comme:yourText.All(char.IsLetterOrDigit || char.IsWhiteSpace)
?Vous pourriez le faire facilement avec une extension de fonction plutôt qu'une regex ...
Par commentaire 🙂 ...
char.IsLetterOrDigit
au lieu IsLetter+IsNumberAlors que je pense que la regex basé solution est sans doute la façon dont j'allais, je serais tenté de saisir cette dans un type.
Maintenant, quand vous avez besoin d'une validation de la chaîne, vous pouvez avoir la signature de la méthode nécessite une AlphaNumericString, et de savoir que si vous obtenez un, il est valable (à part les valeurs null). Si quelqu'un tente de passer dans un non-validé chaîne, il va générer une erreur du compilateur.
Vous pouvez obtenir de l'amateur et de mettre en œuvre tous les opérateurs d'égalité, ou un cast explicite AlphaNumericString de plain ol de la chaîne, si vous vous souciez.
static public implicit operator string
partieJ'avais besoin de vérifier pour A-Z, a-z, 0-9; sans une regex (même si l'OP demande regex).
Mélange de différentes réponses et commentaires ici, et la discussion de https://stackoverflow.com/a/9975693/292060, ce tests pour lettre ou un chiffre, en évitant les autres lettres de la langue, et en évitant les autres numéros, tels que les caractères de fraction.
^\w+$
permettraa-zA-Z0-9_
Utilisation
^[a-zA-Z0-9]+$
interdire le trait de soulignement.Noter que deux de ces exiger la chaîne de ne pas être vide. À l'aide de
*
au lieu de+
permet de chaînes vides.^[\w-]+$
Afin de vérifier si la chaîne est à la fois une combinaison de lettres et de chiffres, vous pouvez ré-écrire @jgauffin répondre comme suit à l'aide .NET 4.0 et LINQ:
Je vous conseille de ne pas dépendre sur prêts et intégré dans le code .NET framework , essayer de mettre en place une nouvelle solution ..c'est ce que je fais..
char.IsNumber()
méthode qui est pré-construit de code?true
simplement si le dernier caractère de la chaîne est alphanumérique, car il ne brise jamais de la boucle sur unfalse
conditiontrue
si n'IMPORTE quel caractère dans la chaîne alphanumérique