如何修改账号创建PS脚本的用户名校验正则,满足特殊字符限制规则
适配需求的正则方案
最终正则表达式
区分大小写版本
^[a-zA-Z]+(?:['-][a-zA-Z]+)*\.[a-zA-Z0-9]+(?:['-][a-zA-Z0-9]+)*$
PowerShell常用忽略大小写版本(更简洁)
在正则开头加(?i)标记即可兼容大小写不敏感的校验场景:
(?i)^[a-z]+(?:['-][a-z]+)*\.[a-z0-9]+(?:['-][a-z0-9]+)*$
规则匹配说明
逻辑拆解
- FirstName部分
^[a-zA-Z]+(?:['-][a-zA-Z]+)*- 开头强制为字母,避免首字符为连字符/撇号
- 非捕获组
(?:['-][a-zA-Z]+)限定:每次出现连字符/撇号后,必须紧跟至少1个字母,天然避免两个符号连续出现、以及末尾为符号的情况 - 仅允许字母、连字符、撇号,完全符合FirstName的字符限制
- 强制匹配姓名分隔符
\. - LastName部分
[a-zA-Z0-9]+(?:['-][a-zA-Z0-9]+)*$- 逻辑同FirstName,仅将允许的字符范围扩展为字母+数字
- 末尾强制为字母/数字,避免尾字符为连字符/撇号
校验效果示例
- 匹配的合法用户名:
sh-aun.ohn0'doe、o'neil.smith、mary-anne.jones2 - 拦截的非法用户名:
- 首尾为符号:
-shaun.smith、shaun.smith' - 符号连续:
sha--un.smith、o''neil.smith、shaun.sm--ith - FirstName含数字:
shaun1.smith
- 首尾为符号:
内容的提问来源于stack exchange,提问作者Shauno100
相关产品推荐
相关产品推荐

