regex - 在PowerShell中检查所有小写字母的字符串

标签 regex powershell case

我希望能够测试 PowerShell 字符串是否全部为小写字母。

我不是世界上最好的正则表达式猴子,但我一直在尝试以下方法:

if ($mystring -match "[a-z]^[A-Z]") {
    echo "its lower!"
}

但当然,它们不起作用,而且在互联网上搜索也无济于事。有没有办法做到这一点(除了测试循环中的每个字符)?

最佳答案

PowerShell 默认匹配不区分大小写,因此您需要使用 -cmatch运算符(operator):

if ($mystring -cmatch "^[a-z]*$") { ... }
-cmatch总是区分大小写,而 -imatch始终不区分大小写。

旁注:你的正则表达式也有点奇怪。基本上你想要我在这里提供的一个
  • anchor用于字符串的开头 ( ^ )
  • character class小写拉丁字母 ( [a-z] )
  • quantifier ,告诉重复字符类至少 0 次,从而根据需要匹配尽可能多的字符( * )。您可以使用 +而不是禁止空字符串。
  • anchor用于字符串的结尾( $ )。这两个 anchor 确保正则表达式必须匹配字符串中的每个字符。如果你只是使用 [a-z]*那么这将匹配任何字符串至少为 0 的字符串其中某处的小写字母。这将是每个字符串。

  • PS:Ahmad 有一个观点,如果您的字符串也可能包含字母以外的其他内容,并且您想确保其中的每个字母都是小写的,而不是要求字符串仅由字母组成,那么你必须反转字符类,有点:
    if ($mystring -cmatch "^[^A-Z]*$") { ... }
    
    ^在字符类的开头反转类,匹配未包含的每个字符。因此,只有当字符串在某处包含大写字母时,此正则表达式才会失败。尽管如此,-cmatch还是需要的。

    关于regex - 在PowerShell中检查所有小写字母的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2098485/

    相关文章:

    c# switch 语句 return 适合替换 break

    java - 正则表达式获取部分异常消息

    regex - 替换 VB.Net 代码中的属性定义

    regex - 正则表达式: how to deal with character/

    powershell - 如何使用 Powershell 将哈希表与另一个哈希表进行比较?

    powershell - 如何为函数添加自动完成和通配符功能?

    powershell - 使用Windows批处理文件仅从文本文件中提取第一行

    sql - 使用嵌套聚合函数按行分组的总和

    javascript - JQuery - OnKeyPress 输入文本标题大小写

    javascript - 为什么 'B' 与 [a-z] 匹配?