验证字符串参数长度和特殊字符

时间:2018-06-05 17:10:30

标签: regex powershell

我正在尝试验证字符串参数是否至少为8个字符,最大长度为32且至少包含一个特殊字符。这就是我到目前为止所做的:

[Parameter(Mandatory)]
[ValidateLength(8, 32)]
[ValidateScript({ $_ -match '[^a-zA-Z0-9]' })]
[string]$Param1

我不确定正则表达式是否正确?我的测试显示了不同的结果。

1 个答案:

答案 0 :(得分:0)

尝试

{
[ValidateScript(
{
    $_ -match "^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[#$@!%&])[A-Za-z\d#$@!%&]{8,32}$"
})]
}

匹配8到32个字符,至少有1个大写字母,1个小写字母,1个数字和一个特殊字符