1)имя (до @) не длиннее 128 символов, состоит из символов a-z0-9“._-
2)в имени не допускаются две точки подряд;
3)если в имени есть двойные кавычки ”, то они должны быть парными;
4)в имени могут встречаться символы “!,:”, но только между двойными кавычками.
По отдельности на каждую строчку я могу написать условие, но всё вместе в одно выражение собрать не получается. И вообще возможно ли выполнить условие “в имени не допускаются две точки подряд” одновременно с другими?
Мои наработки ( условие 4 я пока никак не учёл ):
def valid_hostname ( hostname) : # имя (до @) не длиннее 128 символов, состоит из символов a-z0-9"._-; p_hostname = re.compile(u'[\.a-z0-9"_-]{1,128}$') if not ( p_hostname.match(hostname) ) : return False # в имени не допускаются две точки подряд; if re.search( u"\.\.", hostname ) : return False # если в имени есть двойные кавычки ", то они должны быть парными; l = re.compile(r'"') if ( len( l.findall(hostname) ) % 2 ) == 1 : return False return True