Как видно из различных ответов, регулярные выражения могут добавлять ненужную сложность. float.TryParse()
точно скажет вам, можно ли сделать значение плавающим или нет.
При этом также учитываются региональные настройки на компьютере пользователя, чего нет в регулярных выражениях (или они станут ужасными, если они попытаются).
Я бы хотел использовать что-то вроде этого вместо регулярного выражения:
bool isValid = float.TryParse(textbox1.Text);