So I was able to figure out the correct regex. The issue that I was having was about the escape characters and the way they were being interoperated.
<g:textField type="number" pattern="^[0-9]+\\s*\$|^[0-9]+\\.?[0-9]+\\s*\$" required="true" class="form-control" name="hours" value="${deliverable.estimatedHours}"/>
This will now check the format for an input string and make sure that it only contains numbers.