首页 > 解决方案 > 验证字符串参数长度和特殊字符

问题描述

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

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

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

标签: regexpowershell

解决方案


尝试

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

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


推荐阅读