2016-04-29 208 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" } 
相關問題