You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Active Directory账号正则匹配求助:account@domain格式匹配失败

解决Active Directory账号正则匹配问题

咱们先拆解下你当前正则的问题,再构建一个能匹配testuser@test.local这类AD账号(包含多级子域名,比如testuser@test.local.country.city.street)的正确表达式:

你的当前正则存在的核心问题

  • 语法完全错误:\w[\w\.\- ]*$/@/^[a-zA-Z][a-zA-Z0-9\-\.]{0,61}[a-zA-Z] 这种写法不是标准正则语法,/@/不是正则的合法分隔符,而且开头的$和结尾的^锚点位置颠倒,导致根本无法匹配完整的账号格式。
  • 缺少关键结构:没有处理@这个用户名和域名的核心分隔符,也没有划分清楚两部分的规则边界。

AD账号(UPN格式)的规则梳理

要匹配正确的格式,得先明确AD用户主体名称(UPN)的基本规则:

  • 用户名部分:允许字母、数字、下划线、连字符、点,部分特殊字符也支持(比如!#$%&'*+/=?^_{|}~`),长度最多64字符。
  • 必须包含唯一的@分隔符。
  • 域名部分:支持多级子域,每一级需满足:开头和结尾为字母/数字,中间可含连字符,单级最长63字符;顶级域名(比如local、com)长度至少2字符。

正确的正则表达式

^[a-zA-Z0-9_\-.]{1,64}@([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$

正则各部分解释

  • ^:匹配字符串的起始位置,确保从账号开头开始匹配
  • [a-zA-Z0-9_\-.]{1,64}:匹配用户名,允许常见的合法字符,长度限制在1-64之间(符合AD的用户名长度要求)
  • @:强制匹配用户名和域名之间的分隔符
  • ([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+:匹配多级子域名的每一级,确保每级开头结尾是字母/数字,中间可含连字符,每级最长63字符,末尾带点,支持重复多次(对应多级子域)
  • [a-zA-Z]{2,}:匹配顶级域名,长度至少2字符(比如local、city)
  • $:匹配字符串的结束位置,确保没有多余字符

扩展说明

如果需要支持AD允许的更多特殊用户名字符,可以把用户名部分替换为:

[a-zA-Z0-9_\-.!#$%&'*+/=?^_`{|}~]{1,64}

内容的提问来源于stack exchange,提问作者Thypari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:14:51