Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import re
- class CheckEmailErr(Exception):
- pass
- class InvalidHostErr(CheckEmailErr):
- pass
- class InvalidNameErr(CheckEmailErr):
- pass
- class AtIsNotOnceErr(CheckEmailErr):
- pass
- def checkHost(host):
- if not re.compile("^[a-z0-9_.-]{3,256}$").match(host):
- raise InvalidHostErr
- items = host.split(".")
- if len(items) < 2:
- raise InvalidHostErr
- for item in items:
- if not item or item[0] == "-" or item[-1] == "-":
- raise InvalidHostErr
- def checkName(name):
- if not re.compile("^[a-z0-9\"._!,:-]{,128}$").match(name):
- raise InvalidNameErr
- quote = False
- if name.find("..") != -1:
- raise InvalidNameErr
- for c in name:
- if c == "\"":
- quote = not quote
- elif c in "!,:":
- if not quote:
- raise InvalidNameErr
- if quote:
- raise InvalidNameErr
- def isValidEmail(email):
- try:
- items = email.split("@")
- if len(items) != 2:
- raise AtIsNotOnceErr
- name, host = items
- checkHost(host)
- checkName(name)
- return True
- except CheckEmailErr:
- return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement