fal*_*lic 5 regex powershell case
我希望能够测试PowerShell字符串是否都是小写字母.
我不是世界上最好的正则表达式猴子,但我一直在尝试这些方法:
if ($mystring -match "[a-z]^[A-Z]") {
echo "its lower!"
}
Run Code Online (Sandbox Code Playgroud)
但当然它们不起作用,搜索互联网并没有把我带到任何地方.有没有办法做到这一点(除了测试循环中的每个字符)?
Joe*_*oey 10
PowerShell默认情况下不区分大小写,因此您需要使用-cmatch
运算符:
if ($mystring -cmatch "^[a-z]*$") { ... }
Run Code Online (Sandbox Code Playgroud)
-cmatch
是始终大小写敏感的,而-imatch
始终不区分大小写.
旁注:你的正则表达式也有点奇怪.基本上你想要我在这里提供的那个
^
)[a-z]
)*
).您可以+
改为禁用空字符串.$
).这两个锚点确保正则表达式必须匹配字符串中的每个字符.如果你只是用[a-z]*
那么这将匹配至少有一串任何字符串0
小写字母的地方在里面.这将是每个字符串.PS:Ahmad有一点,如果你的字符串可能包含其他东西而不是字母,并且你想确保其中的每个字母都是小写的,而不是要求字符串仅由字母组成,那么你必须反转字符类,有点:
if ($mystring -cmatch "^[^A-Z]*$") { ... }
Run Code Online (Sandbox Code Playgroud)
将^
在字符类的开始反转类,每一个字符匹配不包括在内.因此,如果字符串在某处包含大写字母,则此正则表达式将失败.尽管如此,-cmatch
仍然需要.
如果您的测试非常简单,您可以并且可能应该避免使用正则表达式:
$mystring -ceq $mystring.ToLower()
Run Code Online (Sandbox Code Playgroud)