Для забавы вот несколько ответов без регулярных выражений. Я считаю, что их легче читать.
Если -123
и 123--123
не разрешены:
s.Split('-').All(x => x != string.Empty && x.All(char.IsDigit));
Элемент Foreach между -
, мы проверяем, что этот элемент не пустой и состоит только из числа.
Если -123
и 123--123
разрешены:
!s.EndsWith("-") && s.All(c => c == '-' || char.IsDigit(c));
Убедитесь, что строка s
не заканчивается на -
и что s
состоит из -
и только цифр.
Попробуйте онлайн!
Обратите внимание, что char.IsDigit
позволит ๔๕๖๗๘๙໐໑-௫௬௭௮
. Если вы не хотите совпадать с этим, замените char.IsDigit()
на IsDigit()
:
public static bool IsDigit(char c) => c >= '0' && c <= '9';