Skip to main content
 首页 » 编程设计

用于在电子邮件地址中查找点的 Python 正则表达式

2025年05月04日27xiaohuochai

我正在尝试创建一个函数来执行此操作:

  • 确保域的开头或结尾没有 .。
  • 确保域中没有两个 .。
  • 确保域中至少有一个 .。

像 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)