gemini-2api / core /mail_utils.py
xiaoyukkkk's picture
Upload 18 files
6bf62af verified
import re
from typing import Optional
def extract_verification_code(text: str) -> Optional[str]:
"""提取验证码"""
if not text:
return None
# 策略1: 上下文关键词匹配(中英文冒号)
context_pattern = r"(?:验证码|code|verification|passcode|pin).*?[::]\s*([A-Za-z0-9]{4,8})\b"
match = re.search(context_pattern, text, re.IGNORECASE)
if match:
candidate = match.group(1)
# 排除 CSS 单位值
if not re.match(r"^\d+(?:px|pt|em|rem|vh|vw|%)$", candidate, re.IGNORECASE):
return candidate
# 策略2: 6位字母数字混合(与测试代码一致,优先级提高)
match = re.search(r"[A-Z0-9]{6}", text)
if match:
return match.group(0)
# 策略3: 6位数字(降级为备选)
digits = re.findall(r"\b\d{6}\b", text)
if digits:
return digits[0]
return None