Регулярное выражение, чтобы соответствовать буквенной строке и потребовать по крайней мере одного верхнего регистра и одного нижнего регистра (vb.net)

Я немного боролся по этому поводу:

1;

В Perl модули должны возвращать что-то истинное .

5
задан Brad Mace 10 July 2011 в 05:07
поделиться

3 ответа

Созданное вами регулярное выражение не сработает при некоторых условиях, таких как «aAb». Я думаю, вам лучше подойдет следующий вариант:

^(?:[a-z]+[A-Z]+|[A-Z]+[a-z]+)(?:[a-zA-Z])*$
4
ответ дан 14 December 2019 в 01:14
поделиться

Этот RegEx будет работать для you:

^[a-zA-Z]*([A-Z][a-z]|[a-z][A-Z])[a-zA-Z]*$

Объяснение: если строка должна содержать хотя бы одну строчную и одну прописную букву, существует точка, в которой прописные и строчные буквы располагаются рядом друг с другом. Это место соответствует ([AZ] [az] | [az] [AZ]), и он соответствует обоим случаям: первый, где верхний регистр - первый, а второй - тогда, если у вас есть этот критерий, вы просто можете добавить произвольное количество строчных и прописных букв символ в любом конце строки, и он все равно будет соответствовать

4
ответ дан 14 December 2019 в 01:14
поделиться

Ради интереса я попытался решить вашу проблему без использования регулярных выражений.

У меня есть следующий метод, который проверяет, есть ли строковое значение содержит символы, которые соответствуют указанным категориям Unicode (верхний регистр, нижний регистр, цифра ...)

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

Метод можно использовать следующим образом:

Dim myString As String = "aAbbC"
Dim validString As Boolean = IsValid(myString, _
                                     UnicodeCategory.LowercaseLetter, _
                                     UnicodeCategory.UppercaseLetter)

Используя этот метод, вы можете разрешить прописные, строчные буквы И цифры, ничего не меняя . Просто добавьте третий аргумент в IsValid: UnicodeCategory.DecimalDigitNumber

)

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

Этот метод можно использовать следующим образом:

Dim myString As String = "aAbbC"
Dim validString As Boolean = IsValid(myString, _
                                     UnicodeCategory.LowercaseLetter, _
                                     UnicodeCategory.UppercaseLetter)

Используя этот метод, вы можете разрешить прописные, строчные и цифровые символы И без каких-либо изменений. Просто добавьте третий аргумент в IsValid: UnicodeCategory.DecimalDigitNumber

)

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

Этот метод можно использовать следующим образом:

Dim myString As String = "aAbbC"
Dim validString As Boolean = IsValid(myString, _
                                     UnicodeCategory.LowercaseLetter, _
                                     UnicodeCategory.UppercaseLetter)

Используя этот метод, вы можете разрешить прописные, строчные и цифровые символы И без каких-либо изменений. Просто добавьте третий аргумент в IsValid: UnicodeCategory.DecimalDigitNumber

1
ответ дан 14 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: