Я хотел бы добавить короткую заметку о не-ASCII символах. Решение Rnevius (и других) блестящее, но оно позволяет добавлять кириллицу, японские символы, смайлики и другие символы юникода, которые могут быть ограничены некоторыми серверами.
Код ниже напечатает true
, хотя он содержит символ UTF-8 Ё
.
console.log (/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test ('Ё@example.org'))
В моем случае все символы не ASCII запрещены, поэтому я изменил исходное выражение, чтобы исключить все символы выше U + 007F:
/^(([^\u0080-\uffff<>()\[\]\\.,;:\s@"]+(\.[^\u0080-\uffff<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
Может быть, это поможет кому-то предотвратить нежелательное поведение.