我想用powershell来识别只含有大写字母和小写字母的字符串。只识别带有大写字母和小写字母的字符串
$param = "Sam"
If ($param -cmatch "[A-Z]"){
Write-Host "String has uppercase characters"
}
这就是我现在所拥有的,但只有当字符串中存在大写字符时才会返回。如果两者都存在于同一个字符串中,我希望它只返回。
我想用powershell来识别只含有大写字母和小写字母的字符串。只识别带有大写字母和小写字母的字符串
$param = "Sam"
If ($param -cmatch "[A-Z]"){
Write-Host "String has uppercase characters"
}
这就是我现在所拥有的,但只有当字符串中存在大写字符时才会返回。如果两者都存在于同一个字符串中,我希望它只返回。
尝试
$param -cmatch "[A-Z]*.[a-z]" -or $param -cmatch "[a-z]*.[A-Z]"
您可以在http://regexstorm.net/tester
尝试不同的模式
我会用(感谢briantist和基思·汤普森为更新的模式。):
if ($param -cmatch '[a-z]' -and $param -cmatch '[A-Z]')
它必须满足两个匹配,一个单独的小写字符在字符串中的某个位置放置一个大写字符。
Lookaheads
在PowerShell中受支持。所以,你可以使用这个表达式
^(?=.*[A-Z])(?=.*[a-z]).*$
PowerShell代码
If ($param -cmatch "^(?=.*[A-Z])(?=.*[a-z]).*$") { Write-Host "String has both upper and lowercase characters" }
这将失败的一些字符串,例如'k_F'或'我am.' – briantist
我认为你需要在每个正则表达式的两半之间使用'。*'(假定powershell正则表达式与我习惯的类似)。 –