2016-04-29 15 views
1

Ich möchte Powershell verwenden, um nur Zeichenfolgen zu identifizieren, die Groß- und Kleinbuchstaben enthalten.Identifizieren Sie nur Zeichenfolgen mit oberen und unteren

$param = "Sam" 

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

Dies ist, was ich gerade habe, aber das wird nur zurückgegeben, wenn Großbuchstaben in der Zeichenfolge vorhanden sind. Ich möchte, dass NUR zurückgegeben wird, wenn beide in der gleichen Zeichenfolge vorhanden sind.

Antwort

1

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

Sie versuchen, verschiedene Muster bei http://regexstorm.net/tester

versuchen

+1

Dieses auf einige Saiten scheitern, zum Beispiel 'k_F' oder' I am.' – briantist

+0

I Ich denke, Sie brauchen ein '. *' zwischen den beiden Hälften jeder Regexp (vorausgesetzt, Powershell Regexps sind ähnlich denen, die ich gewohnt bin). –

1

ich verwenden würde (Danke für die aktualisierten Muster briantist und Keith Thompson.):

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

Es muss beide Übereinstimmungen erfüllen, ein einzelnes Kleinbuchstabe irgendwo in der Zeichenfolge und ein einzelnes Großbuchstabe irgendwo in der Zeichenfolge.

0

Lookaheads werden in Powershell unterstützt. So können Sie diese Regex verwenden

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

Regex Demo

Powershell-Code

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