I have a similar issue as my recent post but with a zip code validator, I am trying to convert over to a javascript validation process. my script looks like so:
Change your regex to:
new RegExp("^\\d{5}(-\\d{4})?$")
Add anchors: new RegExp("^\\d{5}(-\\d{4})?$"). This forces the regular expression engine to only accept a match, if it begins at the first character of the string (^) and ends at the end of the string ($) being matched.
Note, that there might be a typo in the regular expression you hav given in your question: the second \d is missing a backslash.