1. В исходной строке заменяем все пробелы на '-'. Это обычный
string.Replace
2. Проверяем через регулярное выражение
[a-z0-9\-]+
// Входная строка
var input = "Hello, world 2";
// Заменяем пробелы на тире
input = input.Replace(' ', '-');
// Проверяем регулярным выражением
var regex = new Regex(@"[a-z0-9\-]+");
if (regex.IsMatch(input))
{
Console.WriteLine($"Соответствует");
}
else
{
Console.WriteLine($"Не соответствует");
}
P.S. вообще приведенный пример не соответствует поставке задачи: почему символы перевелись в нижний регистр, почему восклицательный знак исчез.
Так же есть вопрос на счет табуляции и нескольких пробелов последовательно.