我希望能够测试 PowerShell 字符串是否全部为小写字母。
我不是世界上最好的正则表达式猴子,但我一直在尝试以下方法:
if ($mystring -match "[a-z]^[A-Z]") {
echo "its lower!"
}
但当然,它们不起作用,而且在互联网上搜索也无济于事。有没有办法做到这一点(除了测试循环中的每个字符)?
最佳答案
PowerShell 默认匹配不区分大小写,因此您需要使用 -cmatch
运算符(operator):
if ($mystring -cmatch "^[a-z]*$") { ... }
-cmatch
总是区分大小写,而 -imatch
始终不区分大小写。旁注:你的正则表达式也有点奇怪。基本上你想要我在这里提供的一个
^
) [a-z]
) *
)。您可以使用 +
而不是禁止空字符串。 $
)。这两个 anchor 确保正则表达式必须匹配字符串中的每个字符。如果你只是使用 [a-z]*
那么这将匹配任何字符串至少为 0
的字符串其中某处的小写字母。这将是每个字符串。 PS:Ahmad 有一个观点,如果您的字符串也可能包含字母以外的其他内容,并且您想确保其中的每个字母都是小写的,而不是要求字符串仅由字母组成,那么你必须反转字符类,有点:
if ($mystring -cmatch "^[^A-Z]*$") { ... }
^
在字符类的开头反转类,匹配未包含的每个字符。因此,只有当字符串在某处包含大写字母时,此正则表达式才会失败。尽管如此,-cmatch
还是需要的。
关于regex - 在PowerShell中检查所有小写字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098485/