Specifically, the {} qualifier with a single value matches exactly (and only) that number of characters, whereas you appear to want "maximum of..." / "up to..."
Note, because you dont include a start/end marker in your second regex, it'll successfully match the string "123()###ABC", because - despite the supposedly invalid '(' and "#' characters - it'll still find matching substrings (if that's what you want...)
You can also pre-check your regex's using an online tool, eg regex101