.net - 正则表达式模式以匹配有限的长度

标签 .net regex powershell

我有一些由字符和数字以任意顺序形成的数据。一件事是确定它必须同时包含数字和字符。我做了一个匹配这种情况的正则表达式。我现在想进一步介绍一下,并将其限制为仅包含5个符号的字符串。

'1aa21' -match '(\d+)+[a-z]|[a-z]+(\d+)'

我尝试在末尾添加{5},也添加\ S {5},依此类推。
它似乎不起作用。什么是达到期望的最佳方法?

最佳答案

我们可以在字符串的开头使用两个lookaheads。一种用于检查5个字符的固定长度,一种用于检查至少一位数字。字母可以在图案内匹配。

^(?=\S{5}$)(?=\D*\d)\d*[a-z][a-z\d]*$
  • (?=\S{5}$)在5个非空白字符
  • 之后向前寻找$结束
  • (?=\D*\d)在任意数量的非数字
  • 之后向前寻找一个数字
  • \d*[a-z][a-z\d]*匹配任意数量的数字,后跟字母和任何数字

  • See this demo at regexstorm。对于无条件的匹配add the (?i) flag

    如何组合前瞻性和匹配项有不同的选择。另一种方法是使用先行符检查数字和字母,并匹配5个字母数字字符。
    ^(?=\D*\d)(?=\d*[a-z])[a-z\d]{5}$
    

    或交替使用一个负前瞻。
    ^(?!\d*$|[a-z]*$)[a-z\d]{5}$
    

    取决于输入,哪一个将是最佳性能。

    关于.net - 正则表达式模式以匹配有限的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45256952/

    相关文章:

    c# - 具有多个 ColorAnimations 的 Silverlight Storyboard

    c# - 存储在内存中的东西有多安全?

    c# - 在 Startup.cs 中使 ConfigureServices 方法异步

    javascript - 如何使用正则表达式查找多行 JavaScript 注释 block ?

    regex - Oracle中使用正则表达式按分隔符分割字符串

    asp.net - 是否有任何理由不将 pdb 文件部署到生产 Web 服务器?

    regex - 运行 groovy 时 Windows CMD 的奇怪行为

    powershell - 在powershell中获取HashTable的长度

    powershell - 从命令行 PowerShell 7.2 传递哈希表参数

    powershell - 嵌套循环抽象