A special quirk about the - sign is that
it has special meaning within grouping brackets. (Assuming that's an ordinary keyboard hyphen, and not a special ndash character or hard hyphen or whatnot.) The RegEx engine may make exceptions if it's at the very beginning or very end of the grouping brackets; to be safe, escape it as [+\-] or [\-+].
My personal preference is for \d instead of [0-9] but really that's about individual preference; I really doubt there's any significant difference in performance.
format (+/-)XXXXX.XXXX or XXXXX.XXXX or XXXXX i.e., Allowing maximum 5 digits before period, maximum 4 digits after period
If I were facing the question from scratch, I'd say
[+-]?\d{1,5}(\.{0,4})?
Note position of (parentheses)?
Does this expression come in isolation, for example as the entire content of an input field? If so then yes, use the anchors
^[+-]?\d{1,5}(\.{0,4})?$
If it can also come in mid-text, then things get more complicated. I assume you've already got code to strip away leading and trailing blanks, including spurious line breaks.
{1-5}+ <snip> {0-4}*
I know the RegEx engine in JavaScript has some quirks, but to me this just looks like a mistake.
Either +*
or {number-range in brackets} but not both; they're mutually exclusive.
Could there legitimately be 0 digits before the period, like ".314"? If so, you need to add the option for \.\d{1,4} alone, non-optional. But we won't worry about that unless we have to.