This question already has an answer here:
I discovered it by accident here.
I guess I'm not the only one who fixed non-breakable unicode space U+00A0 to something like Alt+Space. So it's pretty easy to circumvent your prevention without even really trying. After all, non-breakable space simply makes sense there.
I think the solution is to:
Only test at the end of the title (only white characters and small misleading ones after [on hold] should allow the test to return positive and block posting) - this will allow discussions on meta to have it spelled properly (see linked question).
Forbid all and every white characters and 0-width characters between [on and hold] - this would be a real fix.