Используя один и тот же класс сущностей для двух идентичных таблиц?

Нет смысла. Даже если вы можете проверить, что адрес электронной почты синтаксически действителен, вам все равно нужно будет проверить, что это не было ошибкой, и что он действительно идет к человеку, которого вы так думаете. Единственный способ сделать это - отправить им электронное письмо и нажать на ссылку для проверки.

Таким образом, самая простая проверка (например, что они случайно не вошли в их адрес) обычно достаточно , Что-то вроде: он имеет ровно один знак @ и по крайней мере один . в части после @:

[^@]+@[^@]+\.[^@]+

Вы, вероятно, также захотите запретить пробелы - там вероятно, являются действительными адресами электронной почты с пробелами в них, но я их никогда не видел, поэтому вероятность того, что это ошибка пользователя, на вашей стороне.

Если вам нужна полная проверка, посмотрите этот вопрос .


Обновление: вот как вы могли бы использовать любое такое регулярное выражение:

import re

if not re.match(r"... regex here ...", email):
  # whatever

Обратите внимание на r перед строка; таким образом, вам не нужно будет избегать вещей дважды.

Если у вас есть большое количество регулярных выражений для проверки, возможно, быстрее скомпилировать регулярное выражение:

import re

EMAIL_REGEX = re.compile(r"... regex here ...")

if not EMAIL_REGEX.match(email):
  # whatever

1
задан AaronLS 18 October 2010 в 16:43
поделиться