Честно говоря, я думаю, что вам лучше указать хорошие символы, чем пытаться найти все плохие символы (в конце концов, есть множество не-ASCII символов, о которых вы забыли). Я бы сделал что-то вроде:
$regex = '#[^a-z0-9_]#i';
$val = preg_replace($regex, '', $val);
$val = strtoupper($val);
Это регулярное выражение будет содержать допустимые символы в виде букв, цифр и _. Если вам нужно больше, просто добавьте их в класс персонажа. Нет необходимости разбивать пробел, так как регулярное выражение будет совпадать с пробелами (^ в начале класса символов - это отрицание) ...
Вы можете настроить JS следующим образом:
var illegalChars = /[^a-z0-9_]/gi;
var siteSuggest = $(this).val().replace(new RegExp(illegalChars), '').toUpperCase();