Regex пустая строка или электронная почта

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

Ответ 1

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

^$

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

(^$|^.*@.*\..*$)

Ответ 2

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

(^$|^[a-zA-Z0-9._%+-][email protected][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._%+-][email protected][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

Ответ 3

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

/\A(INTENSE_EMAIL_REGEX|)\z/i

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

/\A(|INTENSE_EMAIL_REGEX)\z/i

Ответ 4

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

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

Ответ 5

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

console.log("  ".match(/^\s+$|^$/gi));
console.log("".match(/^\s+$|^$/gi));

Ответ 6

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

"^$|^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"

Ответ 7

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

Как:

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