我想用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正則表達式與我習慣的類似)。 –