【发布时间】:2018-07-12 10:18:28
【问题描述】:
我有一个至少匹配 1 个大写字母、1 个小写字母和 1 个数字的正则表达式:
"(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*"
我正在尝试修改为只允许使用下划线、美元符号或井号,_ $ £ 我不知道如何处理这个问题。这是不正确的:
"(?=.*\d)(?=.*[a-z_$£])(?=.*[A-Z]).*"
例如:
'Pa$$w0rd' - true
'orange1_' - false
'Apple22_' - true
'Banana100_!' - false
这个例子有什么问题?
【问题讨论】:
-
Powershell?你想添加另一个 required 模式吗?然后使用
"^(?=\D*\d)(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z])(?=[^_$£]*[_$£]).*" -
您的意思是“只允许”还是“也允许”?还是“也需要”?
-
@tobias_k 也允许
-
@LightningWar 但是您的原始正则表达式已经允许这些,它只需要其他的。
-
为什么
Banana100_!无效?存在 1 个高位、1 个低位、1 个数字、1 个_。
标签: regex