Я нашел много проверок электронной почты Regex в SO, но я не нашел ни одной, которая будет принимать пустую строку. Это возможно только через Regex? Принимать только пустую строку или только электронную почту? Я хочу, чтобы это было только на Regex.
Этот шаблон регулярного выражения будет соответствовать пустой строке:
^$
И это будет (грубо) соответствовать электронной почте или пустой строке:
(^$|^.*@.*\..*$)
совпадение с пустой строкой или адресом электронной почты
(^$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
совпадение с пустой строкой или адресом электронной почты, но также с любым количеством пробелов
(^\s*$|^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.(?:[a-zA-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|asia|jobs|museum)$)
подробнее о самом письме, соответствующем регулярному выражению:
http://www.regular -expressions.info / email.html
Ответы выше работают ($ для пустых), но я только что попробовал это, и это также работает, чтобы просто оставить пустым, как это:
/\A(INTENSE_EMAIL_REGEX|)\z/i
То же самое в обратном порядке
/\A(|INTENSE_EMAIL_REGEX)\z/i
Если вы используете его в рельсах - ActiveReord валидации вы можете установить allow_blank: true
allow_blank: true
Как:
validates :email, allow_blank: true, format: { with: EMAIL_REGEX }
это решит, он примет пустую строку или точный идентификатор электронной почты
"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Я предпочитаю /^\s+$|^$/gi, чтобы соответствовать пустым и пустым пробелам.
/^\s+$|^$/gi
console.log(" ".match(/^\s+$|^$/gi)); console.log("".match(/^\s+$|^$/gi));
Не сопоставляйте письмо с регулярным выражением. Это чрезвычайно уродливо, долго и сложно , и ваш анализатор регулярных выражений, вероятно, все равно не справится. Попробуйте найти библиотечную процедуру для их сопоставления. Если вы хотите решить только практическую проблему с сопоставлением адреса электронной почты (то есть, если вам нужен неправильный код, который обычно (как правило) работает), воспользуйтесь ссылкой на normal-expressions.info, которую отправил кто-то другой.
Что касается пустой строки, ^$ упоминается несколькими людьми и будет работать нормально.