Я хочу использовать регулярное выражение (регулярное выражение), чтобы найти недопустимые символы в строке. Строка вводится пользователем, и когда регулярное выражение находит недопустимые символы, я хочу дать пользователю обратную связь, какие символы были недопустимыми. Пример предупреждающего сообщения: «Допускается только 0-9 и пробел. Найдены недопустимые символы: ab», когда ввод был "- 10 a 0 b"
.
Допустимая строка:
- целое число
- отрицательным или положительным
- разрешено иметь любое количество пробелов в любой позиции.
Так, например, эти строки VALID НЕ должны соответствовать регулярному выражению:
"-100"
"- 1 00"
" - 1 00"
"100"
" 1 0 0 "
"1 00"
Хотя регулярное выражение должно находить совпадения в следующих строках INVALID:
"- 1 a 0 0 b" should match "a" and "b"
"- 1 a 0 0 -" should match "a" and "-"
У меня было рабочее регулярное выражение для положительных целых чисел, пока я не обнаружил, что забыл включить отрицательные целые числа:
var regex = new Regex(@"[^0-9\s]")
var invalidCharacters = regex.Matches(text)
У меня есть только очень базовое c знание регулярных выражений. Я попытался отрицать регулярное выражение, чтобы включить отрицательные целые числа, но оно не работает:
new Regex(@"(?!-?[0-9\s])")
Я надеюсь, что кто-то может помочь мне с этим. Если это может быть решено легче, удаляя требование пробела. Тогда, пожалуйста, не стесняйтесь игнорировать часть пробела.