The key issue here is likely to be the regex variant that is being used and the various capabilities it may have. (Unfortunately regex engines are NOT all the same).
I am assuming that you are using some file search tool that can filter file names based on some regex pattern. Therefore we really need to know what the tool is or, preferably, the regex engine that it uses.
Further, I assume you are talking about "windows" style file names as in "MyWord.docx" and "Temp.002" etc., and that the tool is presenting the file name as text that contains *only* the file name and type (possibly with a preceding directory path but certainly nothing after the file type.
In that case you are probably not far from the mark. Working backwards, the '$' is the usual zero-width anchor to match the end of the text (or the end of a line if the "multiline" option is set). With some environments, the end of line is taken as "\r\n" with the "$" matching the "\n" only - therefore you may need '\r?$' to anchor the end of the line.
Moving back, you want to match a sequence of digits. The '[0-9]' character set will certainly match a digit (your regex may also accept '\d' as a shortcut way of expressing this character set definition). However I suspect that you have used the wrong quantifier: the '?' quantifier will match the previous item (the '[0-9]' in this case) zero or 1 time; whereas I suspect you mean the '+' quantifier which will match the previous item 1 or more times, matching as many times as possible.
Therefore the end of the pattern might be:
To make sure that the character before the first digit is a directory path separator, the what you have is probably correct, namely '/' but as your regex environment seems to want the pattern to be delimited and you have chosen the "/" as the delimiter, then you are correct to escape it to be "\/'. However you will need to check that the file name that is being checked will always have at least a partial path before it.
I'm not sure the purpose of the '*' at the start of you pattern as most regex parsers would flag that up as a syntax error. (As I type this I wonder if this is supposed to be used as the input to some parser that treats '*' as match any character - this is why knowing the actual regex variant that is being used is so important).
However, the way a regex tries to match a pattern to the text means that, if you don't care what comes before the part you have matched, then you don;t need to include it in the pattern. While the regex engine will start at the beginning of the text, the anchor etc. will make the match fail until it has progressed far enough through to only match the digits right at the end.
Therefore the pattern we have come up with so far should be sufficient.