Juste pour le plaisir, j'ai essayé de résoudre votre problème sans utiliser d'expressions régulières.
I ont la méthode suivante qui vérifie si une valeur de chaîne contient des caractères qui correspondent à des catégories d'Unicode spécifié (majuscules, minuscules, chiffres ...)
Private Function IsValid(ByVal value As String, _
ByVal ParamArray categories As UnicodeCategory()) _
As Boolean
'Create a hashset with valid unicode categories
Dim validSet = New HashSet(Of UnicodeCategory)(categories)
'Group the string value's characters by unicode category
Dim groupedCharacters = value.GroupBy(Function(c) Char.GetUnicodeCategory(c))
'Get an enumerable of categories contained in the string value
Dim actualCategories = groupedCharacters.Select(Function(group) group.Key)
'Return true if the actual categories correspond
'to the array of valid categories
Return validSet.SetEquals(actualCategories)
End Function
Le procédé peut être utilisé de cette façon:
Dim myString As String = "aAbbC"
Dim validString As Boolean = IsValid(myString, _
UnicodeCategory.LowercaseLetter, _
UnicodeCategory.UppercaseLetter)
En utilisant cette méthode, vous pouvez autoriser des majuscules, des minuscules et des chiffres sans rien changer. Juste ajouter un troisième argument à IsValid: UnicodeCategory.DecimalDigitNumber
et si je veux généraliser un peu plus, comme disons maintenant je veux une chaîne qui devrait avoir az AZ, 0-9 et! @ # $ .. et il doit avoir tous les quatre et aucun autre caractère. Ai-je besoin de taper toutes les permutations dans la regex? – Shailendra