Regex пустая строка или адрес электронной почты - PullRequest
108 голосов
/ 21 февраля 2011

Я нашел много проверок электронной почты Regex в SO, но я не нашел ни одной, которая будет принимать пустую строку. Это возможно только через Regex? Принимать только пустую строку или только электронную почту? Я хочу, чтобы это было только на Regex.

Ответы [ 7 ]

255 голосов
/ 21 февраля 2011

Этот шаблон регулярного выражения будет соответствовать пустой строке:

^$

И это будет (грубо) соответствовать электронной почте или пустой строке:

(^$|^.*@.*\..*$)
7 голосов
/ 21 февраля 2011

совпадение с пустой строкой или адресом электронной почты

(^$|^[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

2 голосов
/ 13 ноября 2013

Ответы выше работают ($ для пустых), но я только что попробовал это, и это также работает, чтобы просто оставить пустым, как это:

/\A(INTENSE_EMAIL_REGEX|)\z/i

То же самое в обратном порядке

/\A(|INTENSE_EMAIL_REGEX)\z/i
0 голосов
/ 15 августа 2017

Если вы используете его в рельсах - ActiveReord валидации вы можете установить allow_blank: true

Как:

validates :email, allow_blank: true, format: { with: EMAIL_REGEX }

0 голосов
/ 13 июня 2016

это решит, он примет пустую строку или точный идентификатор электронной почты

"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
0 голосов
/ 13 марта 2014

Я предпочитаю /^\s+$|^$/gi, чтобы соответствовать пустым и пустым пробелам.

console.log("  ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));
0 голосов
/ 17 июля 2012

Не сопоставляйте письмо с регулярным выражением. Это чрезвычайно уродливо, долго и сложно , и ваш анализатор регулярных выражений, вероятно, все равно не справится. Попробуйте найти библиотечную процедуру для их сопоставления. Если вы хотите решить только практическую проблему с сопоставлением адреса электронной почты (то есть, если вам нужен неправильный код, который обычно (как правило) работает), воспользуйтесь ссылкой на normal-expressions.info, которую отправил кто-то другой.

Что касается пустой строки, ^$ упоминается несколькими людьми и будет работать нормально.

...