我正在尝试创建一个函数来执行此操作:
- 确保域的开头或结尾没有
.。 - 确保域中没有两个
.。 - 确保域中至少有一个
.。
像 blabla@outlook.com,它应该确保它不是:
.blabla@outlook.com.
blabla@outlook..com
它是 blabla@outlook.com
这是我用于更正域的代码:
import re
def correct_domain(domain):
if re.search(r'^\.|.$', domain) and re.search(r'\.\.', domain):
return False
else re.search(r'\.', domain):
return True
请您参考如下方法:
.$应该是\.$,and应该是or。 else 应该是 elif,您应该添加最后一个 else 子句来处理完全没有点的域。
if re.search(r'^\.|\.$', domain) or re.search(r'\.\.', domain):
return False
elif re.search(r'\.', domain):
return True
else:
return False
我建议重新组织一下逻辑。您可以将前两个规则合并为一个。您可以在一个 return 语句中完成所有操作。
return re.search(r'\.', domain) and not re.search(r'^\.|.$|\.\.', domain):
你也可以在没有正则表达式的情况下进行这些特定的检查,这样会更具可读性:
return '.' in domain and not \
(domain.startswith('.') or domain.endswith('.') or '..' in domain)
