С# 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;
}
Ответы
Ответ 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]+$");
}