Одна вещь, на которую вы можете обратить внимание, это то, что в нижней части таблицы ascii есть много управляющих символов, которые могут привести к неожиданным результатам. Вот выражение, которое я использую, чтобы разрешить только «не фанки» символы:
^ ([^ \ x0D \ x0a \ x20- \ x7E \ т] *) $