шаблону, а именно все буквы в русском языке, "-" и "_", но последние допускаются только 1 раз?
Собственно на сами буквы проверил и на - с _ тоже, но вот насчет 1 раза, не могу найти информации (1 раз где угодно по тексту.
Для этого нужно создавать новый шаблон или можно прям тут?
!string.IsNullOrEmpty(str) && !Regex.IsMatch(str, @"[^а-я_\-]")
Из того что быстро гуглится Regex.Matches().Count, но это получается отдельный матч идёт
Регулярки так не умеют так шо проверять, что попадается всего 1 раз тебе придётся самому.
Ты должен группу обернуть [\+-]? Сдесь проверяется 1 или 0 вхождений а так ? Разворачивается {0,1}
Попробуй вот это... Длинная регулярка, но если задача регулярками... (я бы не решал регулярками такое) var tests = new string[] { "тест", "те_ст", "те_с-т", "те_ст-", "_тест", "тест_", "те-ст", "-те_ст", "тест-", "тест-_", "тест_-", "тт_-ст", //FALSE "те__ст-", "__тест-", "тест--", "те-с-т", }; foreach (var test in tests) { Console.WriteLine($"{test} - Result: " + Regex.IsMatch(test, @"^([а-я]*(_{0,1}|\-{0,1})[а-я]*)$|^((_{1})[а-я]*(\-{1})[а-я]*)$|^((\-{1})[а-я]*(_{1})[а-я]*)$|^[а-я]*(_{0,1})[а-я]*(\-{0,1})[а-я]*$|^[а-я]*(\-{0,1})[а-я]*(_{0,1})[а-я]*$")); }
Обсуждают сегодня