Используя регулярные выражения для этого не хорошая идея, как был продемонстрирован подробно в тех других сообщениях.
я предполагаю, что люди продолжают делать его, потому что они не знают ничего лучшего или не заботятся.
синтаксический анализатор будет немного лучше? Возможно, возможно, нет.
я поддерживаю, что отправка электронного письма проверки является лучшим способом проверить его. Если Вы хотите проверить что-нибудь от JavaScript, то проверьте, что он имеет знак там и что-то прежде и после него. Если Вы идете немного более строгие, чем это, Вы risc, сталкивающийся с некоторым синтаксисом, Вы не знали о, и Ваш блок проверки допустимости станет чрезмерно строгим.
кроме того, быть осторожными с этим ваша схема проверки TLD, Вы могли бы найти, что Вы принятие слишком много о том, что позволяется в TLD.
Было бы неплохо, если бы для этого был простой RegEx, но я не думаю, что он есть. Насколько я понимаю, вы все еще хотите разрешить такие символы, как% $ # @ и т. Д., Но хотите запретить другие странные символы, такие как вкладки и нули. Если это верно, я считаю, что самым простым способом было бы зациклить каждый символ и оценить код символа ...
function stripCrap(val) {
var result = '';
for(var i = 0, l = val.length; i < l; i++) {
var s = val[i];
if(String.toCharCode(s) > 31)
result += s;
}
return result;
}
Если вы действительно хотите использовать RegEx, подход с использованием белого списка кажется необходимым. Это позволит использовать все числа, буквы и пробелы ...
val = val.replace(/[^a-z 0-9]+/gi,'');
Если у вас есть список «хороших» символов, вы можете создать регулярное выражение, которое соответствует любому символу , а не в вашем списке, и удалить все, что ему соответствует, например, следующее регулярное выражение соответствует чему угодно , кроме букв «a», «q» или «z»:
/[^aqz]+/ig