Регулярное выражение для соответствия "True" или " False"

мне нужно создать валидатор регулярных выражений, который должен будет соответствовать тексту "True" или "False" (без учета регистра).

Я пробовал следующее регулярное выражение

^(True|False|TRUE|FALSE)$

это правильно? но есть проблема в Case Sensitive.

редактировать

Я пробовал regex в следующих ответах, но он не стреляет, из-за ?i

5 ответов


использовать RegexOptions.IgnoreCase

или inline ?i модификатор

^(?i)(true|false)$

Я проверил все ответы в этом посте, но ничего не сработало, как ожидалось.

Я Думаю ?i Не поддерживается в Asp.Net валидатор RegularExpression.

наконец, я использовал следующее регулярное выражение.

^([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])$

это сработало, как и ожидалось.

это регулярное выражение будет использоваться для динамически созданного Asp.net RegularExpressionvalidator.


использовать RegexOptions.IgnoreCase опции и использовать следующие выражения:

^(true|false)$

или использовать игнорировать case modifer ?i

такой:

^(?i:true|false)$

другой вариант-преобразовать строку в нижний регистр и просто использовать ^(true|false)$


С небольшой оптимизацией:

^(?:tru|fals)e$

С тех пор (?i) не является валидацией, мы установим нечувствительность к регистру в коде.

для любого будущего читателя, которому нужен код:

Dim FoundMatch As Boolean
Try
    FoundMatch = Regex.IsMatch(SubjectString, "^(?:tru|fals)e$", RegexOptions.IgnoreCase)
Catch ex As ArgumentException
    'Syntax error in the regular expression
End Try

другой подход для слова True или False:

If Boolean.TryParse(yourString, New Boolean) = true Then
    'ok
else
    'not ok
End If

если вы хотите преобразовать текст в переменной и использовать его в дальнейшем:

Dim value As Boolean
If Boolean.TryParse(yourString, value) = true Then
    'Use value
else
    'Handle a wrong text situation
End If

Boolean.TryParse игнорировать регистр. trUe или TRUE проанализировано ok