If you have lookarounds available:
(?<!\$)\$[^$]+\$(?!\$)
EDIT: Including comments
(?<!\$) # Negative lookbehind. The character before this cannot
# be a $ (it can be the beginning of the string since
# this is a zero-width assertion
\$ # literal $
[^$] # Character class meaning "anything but a $"
+ # Match one or more of this character class
\$ # literal $
(?!\$) # Negative lookahead. Similar to the lookbehind, but
# this cannot be *followed* by $