Je travaille sur un petit projet iphone et il me faudrait vérifier si le nom d'utilisateur entré contient uniquement des caractères alphanumériques? (A-Z, a-z, 0-9
. Comment pourrais-je vérifier cela?
Réponses
Trop de publicités?Vous pouvez utiliser cette bibliothèque d'expressions régulières pour ObjectiveC. Utilisez les expressions régulières suivantes:
^[a-zA-Z0-9]*$
L' NSCharacterSet
réponses ne donnent pas les résultats que vous pouvez attendre pour le Japonais etc texte, souvent en prétendant qu'ils ne contenir que des caractères alphanumériques - le test effectué se résume à "sont là que des lettres ou des chiffres", et les Japonais (etc) caractères comptent comme des "Lettres".
Si vous essayez de vérifier les caractères latins vs une langue étrangère (par exemple. Le japonais), puis la réponse de " Comment déterminer si une NSString est latin? "peut aider:
BOOL isLatin = [myString canBeConvertedToEncoding:NSISOLatin1StringEncoding];
NSASCIIStringEncoding
pourrait également être utilisé à la place de NSISOLatin1StringEncoding pour restreindre davantage les caractères valides. Vous pouvez également tester à l'aide de NSCharacterSet par la suite, afin d'exclure les caractères spéciaux comme !, #, etc.
J'aime beaucoup le framework RegexKit Lite . Il utilise la bibliothèque de regex ICU, qui est déjà incluse dans OSX et qui est sécurisée pour Unicode.
NSString *str = @"testString";
[str isMatchedByRegex:@"^[a-zA-Z0-9]*$"]; // strict ASCII-match
[str isMatchedByRegex:@"^[\p{L}\p{N}]*$"]; // unicode letters and numbers match