Подтвердить что ты не робот

С# Regex: проверка на "a-z" и "A-Z"

Я хочу проверить, была ли строка, введенная символом между a-z или A-Z. Как-то мое регулярное выражение, похоже, не подбирает его. Он всегда возвращает true. Я не уверен, почему, я понимаю, это связано с тем, как я пишу свое регулярное выражение. Любая помощь будет оценена по достоинству.

private static bool isValid(String str)
{
    bool valid = false;

    Regex reg = new Regex((@"a-zA-Z+"));

    if (reg.Match(str).Success)
        valid = false;
    else 
        valid  = true;     

     return valid;
}
4b9b3361

Ответ 1

Правильный путь будет таким:

private static bool isValid(String str)
{
    return Regex.IsMatch(str, @"^[a-zA-Z]+$");
}

Этот код имеет следующие преимущества:

  • Использование статического метода вместо создания нового экземпляра каждый раз: статический метод кэширует регулярное выражение
  • Исправлено регулярное выражение. Теперь он соответствует любой строке, состоящей из одного или нескольких символов a-z или A-Z. Никакие другие символы не разрешены.
  • Значительно короче и удобочитаемо.

Ответ 2

Regex reg = new Regex("^[a-zA-Z]+$");
  • ^ начало строки
  • [] набор символов
  • + один раз или более
  • $конец строки

^ и $необходимо, потому что вы хотите проверить всю строку, а не часть строки

Ответ 3

Используйте

Regex.IsMatch(@"^[a-zA-Z]+$");

Ответ 4

попробуйте следующее:

private static bool isValid(String str){
    return str.matches("^[a-zA-Z]+$");
}