\d*(\.\d\d)?(\$|руб)
Вообще такое задание лучше оформлять на каком-то онлайн регекс билдере
https://regex101.com/r/e74O55/1
И еще странно, что в случае с рублем, нет пробела перед ним
ибо 100$ выглядит нормально, а 100руб - нет. Лучше 100 руб...
но добавить пробел несложно (
\d*(\.\d\d)?(\$| руб)
)