2016-04-29 157 views
1

我想用powershell来识别只含有大写字母和小写字母的字符串。只识别带有大写字母和小写字母的字符串

$param = "Sam" 

If ($param -cmatch "[A-Z]"){ 
    Write-Host "String has uppercase characters" 
} 

这就是我现在所拥有的,但只有当字符串中存在大写字符时才会返回。如果两者都存在于同一个字符串中,我希望它只返回。

回答

1

尝试

$param -cmatch "[A-Z]*.[a-z]" -or $param -cmatch "[a-z]*.[A-Z]" 

您可以在http://regexstorm.net/tester

尝试不同的模式

+1

这将失败的一些字符串,例如'k_F'或'我am.' – briantist

+0

我认为你需要在每个正则表达式的两半之间使用'。*'(假定powershell正则表达式与我习惯的类似)。 –

1

我会用(感谢briantist和基思·汤普森为更新的模式。):

if ($param -cmatch '[a-z]' -and $param -cmatch '[A-Z]') 

它必须满足两个匹配,一个单独的小写字符在字符串中的某个位置放置一个大写字符。

0

Lookaheads在PowerShell中受支持。所以,你可以使用这个表达式

^(?=.*[A-Z])(?=.*[a-z]).*$ 

Regex Demo

PowerShell代码

If ($param -cmatch "^(?=.*[A-Z])(?=.*[a-z]).*$") { Write-Host "String has both upper and lowercase characters" } 
相关问题