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

正则表达式提取UPN或displayName中去除可选前缀的目标用户名或姓氏

正则调整方案

问题根因

原有正则^(?:.*?\.)?(.+?)(?:@.*)?$ 出错的核心原因:

  • 捕获组(.+?)使用惰性匹配,且没有限制不能包含@字符
  • 末尾的(?:@.*)?是可选分组,正则引擎为了完成匹配会优先让可选分组不生效,当字符串没有前置.时,(.+?)会直接匹配整个字符串,包含@及后面的内容,导致提取错误。

修复后正则

如果规则2要求取第一个.之后的全部内容(符合给出的示例场景),使用:

^(?:.*?\.)?([^@]+)(?:@.*)?$

如果规则2要求取最后一个.之后的内容,把.*?改为贪婪匹配即可:

^(?:.*\.)?([^@]+)(?:@.*)?$

调整核心是把捕获组限定为[^@]+,只能匹配非@的字符,遇到@就会停止,强制触发后面的@.*分组匹配域名部分,不会出现捕获内容包含@的问题。

示例匹配验证

用给出的所有测试用例验证,第一个正则的捕获结果完全符合要求:

  • 输入nonpersonalizedusername004 → 捕获nonpersonalizedusername004
  • 输入nonpersonalizedusername019@domaina.local → 捕获nonpersonalizedusername019
  • 输入prefixc.nonpersonalizedusername044@domaina.local → 捕获nonpersonalizedusername044
  • 输入nonpersonalizedusername038@domainb.local → 捕获nonpersonalizedusername038
  • 输入prefixa.nonpersonalizedusername002@domaina.local → 捕获nonpersonalizedusername002
  • 输入prefixb.nonpersonalizedusername038@domainb.local → 捕获nonpersonalizedusername038
  • 输入givenname.surname → 捕获surname
  • 输入givenname.surname@domaina.local → 捕获surname

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:15:03