Chỉ để cho vui, tôi đã cố gắng giải quyết vấn đề của bạn mà không sử dụng cụm từ thông dụng.
tôi có phương pháp sau đó kiểm tra nếu một giá trị chuỗi chứa các ký tự tương ứng với loại unicode quy định (chữ hoa, chữ thường, chữ số ...)
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
Phương pháp này có thể được sử dụng theo cách này:
Dim myString As String = "aAbbC"
Dim validString As Boolean = IsValid(myString, _
UnicodeCategory.LowercaseLetter, _
UnicodeCategory.UppercaseLetter)
Sử dụng phương pháp này, bạn có thể cho phép ký tự chữ hoa, chữ thường và chữ số mà không thay đổi bất kỳ thứ gì. Chỉ cần thêm đối số thứ ba vào IsValid: UnicodeCategory.DecimalDigitNumber
Nguồn
2009-07-20 19:22:12
nếu tôi muốn khái quát hóa nó nhiều hơn một chút, như bây giờ tôi muốn một chuỗi có az AZ, 0-9 và! @ # $ .. và nó phải có tất cả bốn và không có nhân vật khác. Tôi có cần phải gõ vào tất cả hoán vị trong regex không? – Shailendra