Используя регулярные выражения, вы можете достичь этого с помощью: ^\$\d+$
Разбивка:
^...$
- соответствует чему-либо между (...) от начала строки (^) до конца строки ($), вам нужно это, чтобы избежать совпадения $$450
(строка начинается с 2 $ вместо 1)
\$
- буквальный символ доллара (должен быть экранирован)
\d
- любое число от 0 до 9
\d+
- любое число от 0 до 9, повторенное хотя бы один раз (например, 8, 8735, но не ничего)
Ссылка для тестирования и тренировки: https://regex101.com/r/c3YgQO/1
Так как в комментариях было добавлено больше информации, вот обновление:
Это регулярное выражение: ^(-?([€$]\d+|\d+%))$
, кажется, то, что вы ищете.
Разбивка:
-?
- соответствует -
один раз или не совпадает, что делает его необязательным
(...|\d+%)
- совпадения ...
или \d+%
\d+%
- соответствует хотя бы одному числу, за которым следует один символ процента (%
)
Новая тестовая ссылка: https://regex101.com/r/NBzaG1/1
Для сопоставления чисел с десятичной точкой вы можете заменить \d+
на: \d+(\.\d)?\d*