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 de permettre à tous les espaces).
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 de permettre à tous les espaces).
Vous pourriez le faire facilement avec une extension de fonction plutôt qu'une regex ...
public static bool IsAlphaNum(this string str)
{
if (string.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 string str)
{
if (string.IsNullOrEmpty(str))
return false;
return (str.ToCharArray().All(c => Char.IsLetter(c) || Char.IsNumber(c)));
}
Alors 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.
public class AlphaNumericString
{
public AlphaNumericString(string 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 string value;
static public implicit operator string(AlphaNumericString s)
{
return s.value;
}
}
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.
J'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 diverses réponses et commentaires ici, et la discussion de http://stackoverflow.com/a/9975693/292060ce 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.
if (!String.IsNullOrEmpty(testString)
&& testString.All(c => Char.IsLetterOrDigit(c) && (c < 128)))
{
// Alphanumeric.
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.