Advertisement
Guest User

task #5

a guest
Sep 22nd, 2014
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.21 KB | None | 0 0
  1. #!/usr/bin/env python
  2. import re
  3.  
  4.  
  5. class CheckEmailErr(Exception):
  6.     pass
  7.  
  8. class InvalidHostErr(CheckEmailErr):
  9.     pass
  10.  
  11. class InvalidNameErr(CheckEmailErr):
  12.     pass
  13.  
  14. class AtIsNotOnceErr(CheckEmailErr):
  15.     pass
  16.  
  17.  
  18. def checkHost(host):
  19.     if not re.compile("^[a-z0-9_.-]{3,256}$").match(host):
  20.         raise InvalidHostErr
  21.     items = host.split(".")
  22.     if len(items) < 2:
  23.         raise InvalidHostErr
  24.     for item in items:
  25.         if not item or item[0] == "-" or item[-1] == "-":
  26.             raise InvalidHostErr
  27.  
  28.  
  29. def checkName(name):
  30.     if not re.compile("^[a-z0-9\"._!,:-]{,128}$").match(name):
  31.         raise InvalidNameErr
  32.     quote = False
  33.     if name.find("..") != -1:
  34.         raise InvalidNameErr
  35.     for c in name:
  36.         if c == "\"":
  37.             quote = not quote
  38.         elif c in "!,:":
  39.             if not quote:
  40.                 raise InvalidNameErr
  41.     if quote:
  42.         raise InvalidNameErr
  43.  
  44.  
  45. def isValidEmail(email):
  46.     try:
  47.         items = email.split("@")
  48.         if len(items) != 2:
  49.             raise AtIsNotOnceErr
  50.         name, host = items
  51.         checkHost(host)
  52.         checkName(name)
  53.         return True
  54.     except CheckEmailErr:
  55.         return False
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement