regex - 验证字符串参数长度和特殊字符
问题描述
我正在尝试验证字符串参数是否至少为 8 个字符,最大长度为 32,并且至少包含一个特殊字符。这是我到目前为止所拥有的:
[Parameter(Mandatory)]
[ValidateLength(8, 32)]
[ValidateScript({ $_ -match '[^a-zA-Z0-9]' })]
[string]$Param1
我不确定正则表达式是否正确?我的测试显示了不同的结果。
解决方案
尝试
{
[ValidateScript(
{
$_ -match "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&])[A-Za-z\d#$@!%&]{8,32}$"
})]
}
这将匹配 8 到 32 个字符,至少有 1 个大写字母、1 个小写字母、一个数字和一个特殊字符