Как исправить баг с регулярным выражением?
Сделал регулярное выражение на ввод только буквенных символов, но чисто случайно отловил баг с тем, что если к концу строки дописать цифру, то выражение все равно будет true.
Как можно поправить эту регулярку, чтобы при вводе цифры в строке выражение вернуло false
private void nameBox_Validating(object sender, CancelEventArgs e)
{
if ((IsNameValid = (new Regex(@"^[a-zA-Z]")).IsMatch(nameBox.Text)) && IsPhoneValid && IsStreetValid && IsTownValid && IsPasswordValid && IsSurnameValid && IsEmailValid && IsPasswordEqual == true)
{
registrationButton.Enabled = true;
}
else
{
registrationButton.Enabled = false;
}
if(IsNameValid == true)
{
nameTip.Visible = false;
}
else
{
nameTip.Visible = true;
}
}
Ответы (1 шт):
Если вам нужно проверить, состоит ли строка только из букв, вам нужно проверять всю строку, а не только её начало
Ваша регулярка: выражение начинается с буквы
^[a-zA-Z]
Регулярка: выражение начинается с множества букв
^[a-zA-Z]+
Уже ближе, но всё ещё не то.
Регулярка: выражение состоит только из букв (минимум 1 буква)
^[a-zA-Z]+$
Символ $ указывает на то, что после букв строка должна закончиться. Т.е. между началом и концом строки должны быть только буквы