Вы можете попробовать эту более короткую версию, если хотите.
regexp="^(\\b[a-zA-Z\\d+#.-]+\\b(?:\\s+|$)){0,5}$")
Должно работать.
Кстати, в своем регулярном выражении вы говорите:
Совпадение от одного до пяти символов (слово не более 5 символов?), (С последующим пробелом, затем от 0 до 4 символов) ноль или четыре раза. Это то, что вы хотите? :)