Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 验证字符串参数长度和特殊字符_Regex_Powershell - Fatal编程技术网

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

Regex 验证字符串参数长度和特殊字符,regex,powershell,Regex,Powershell,我正在尝试验证字符串参数是否至少为8个字符,最大长度为32,并且至少包含一个特殊字符。这就是我到目前为止所做的: [Parameter(Mandatory)] [ValidateLength(8, 32)] [ValidateScript({ $_ -match '[^a-zA-Z0-9]' })] [string]$Param1 我不确定正则表达式是否正确?我的测试显示了不同的结果。试试看 { [ValidateScript( { $_ -match "^(?=.*[a-z])(?=

我正在尝试验证字符串参数是否至少为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个小写、1个数字和一个特殊字符

这取决于您如何定义特殊字符,
[^a-zA-Z0-9]
匹配ASCII字母和数字以外的任何字符。您可能希望列出特殊字符,而不是负数字符类。否则,您可能会使用一些奇怪的unicode或emjoi作为特殊字符,但也许您希望这样做?显示一些输入和预期结果会很有帮助。请尝试
^(?=.[special characters])。{8,32}$
是否验证密码?默认情况下,请引用
获取有关比较运算符的帮助,所有比较运算符都不区分大小写。要使比较运算符区分大小写,请在运算符名称前加上“c”。