Comment puis-je valider une chaîne pour y autoriser uniquement les caractères alphanumériques?

Comment puis-je valider une chaîne à l’aide des expressions régulières pour autoriser uniquement les caractères alphanumériques?

(Je ne veux pas autoriser les espaces non plus).

Utilisez l’expression:

^[a-zA-Z0-9]*$ 

ie: en utilisant System.Text.RegularExpressions;

 Regex r = new Regex("^[a-zA-Z0-9]*$"); if (r.IsMatch(SomeSsortingng)) { ... } 

Dans .NET 4.0, vous pouvez utiliser LINQ:

 if (yourText.All(char.IsLetterOrDigit)) { //just letters and digits. } 

yourText.All s’arrêtera d’exécuter et renverra false la première fois que char.IsLetterOrDigit signale que le contrat de All ne peut pas être rempli.

Remarque! cette réponse ne vérifie pas ssortingctement les caractères alphanumériques (qui sont généralement AZ, az et 0-9). Cette réponse permet aux personnages locaux comme åäö .

Mise à jour 2018-01-29

La syntaxe ci-dessus ne fonctionne que lorsque vous utilisez une seule méthode qui a un seul argument du type correct (dans ce cas, char ).

Pour utiliser plusieurs conditions, vous devez écrire comme ceci:

 if (yourText.All(x => char.IsLetterOrDigit(x) || char.IsWhiteSpace(x))) { } 

Vous pourriez le faire facilement avec une fonction d’extension plutôt qu’une regex …

 public static bool IsAlphaNum(this ssortingng str) { if (ssortingng.IsNullOrEmpty(str)) return false; for (int i = 0; i < str.Length; i++) { if (!(char.IsLetter(str[i])) && (!(char.IsNumber(str[i])))) return false; } return true; } 

Par commentaire 🙂 ...

 public static bool IsAlphaNum(this ssortingng str) { if (ssortingng.IsNullOrEmpty(str)) return false; return (str.ToCharArray().All(c => Char.IsLetter(c) || Char.IsNumber(c))); } 

Bien que je pense que la solution basée sur les regex serait probablement la solution que je choisirais, je serais tenté de l’intégrer dans un type.

 public class AlphaNumericSsortingng { public AlphaNumericSsortingng(ssortingng s) { Regex r = new Regex("^[a-zA-Z0-9]*$"); if (r.IsMatch(s)) { value = s; } else { throw new ArgumentException("Only alphanumeric characters may be used"); } } private ssortingng value; static public implicit operator ssortingng(AlphaNumericSsortingng s) { return s.value; } } 

Maintenant, lorsque vous avez besoin d’une chaîne validée, vous pouvez demander à la signature de la méthode un AlphaNumericSsortingng, et sachez que si vous en obtenez une, elle est valide (sauf les valeurs NULL). Si quelqu’un tente de transmettre une chaîne non validée, une erreur de compilation sera générée.

Vous pouvez devenir plus sophistiqué et implémenter tous les opérateurs d’égalité, ou un transtypage explicite à AlphaNumericSsortingng à partir de la chaîne plain ol ‘, si vous le souhaitez.

Je devais vérifier AZ, az, 0-9; sans regex (même si l’OP demande une expression rationnelle).

En mélangeant diverses réponses et commentaires, et en discutant depuis https://stackoverflow.com/a/9975693/292060 , vous testez la lettre ou le chiffre, en évitant les autres lettres de langue et en évitant d’autres nombres, tels que les fractions.

 if (!Ssortingng.IsNullOrEmpty(testSsortingng) && testSsortingng.All(c => Char.IsLetterOrDigit(c) && (c < 128))) { // Alphanumeric. } 

^\w+$ permettra a-zA-Z0-9_

Utilisez ^[a-zA-Z0-9]+$ pour interdire le soulignement.

Notez que les deux exigent que la chaîne ne soit pas vide. Utiliser * au lieu de + autorise les chaînes vides.

Pour vérifier si la chaîne est à la fois une combinaison de lettres et de chiffres, vous pouvez réécrire @jgauffin comme suit en utilisant .NET 4.0 et LINQ:

 if(!ssortingng.IsNullOrWhiteSpace(yourText) && (!yourText.Any(char.IsLetter) || !yourText.Any(char.IsDigit))) { // do something here } 

Je conseille de ne pas dépendre du code prêt à l’emploi et intégré dans le framework .NET, essayez de mettre en place une nouvelle solution .. c’est ce que je fais ..

 public bool isAlphaNumeric(ssortingng N) { bool YesNumeric = false; bool YesAlpha = false; bool BothStatus = false; for (int i = 0; i < N.Length; i++) { if (char.IsLetter(N[i]) ) YesAlpha=true; if (char.IsNumber(N[i])) YesNumeric = true; } if (YesAlpha==true && YesNumeric==true) { BothStatus = true; } else { BothStatus = false; } return BothStatus; }