正则表达式模式匹配有限的长度

时间:2017-07-22 16:45:32

标签: .net regex powershell

我有一些由任意随机顺序的字符和数字组成的数据。一件事是肯定它必须同时包含数字和字符。我制作了一个匹配此案例的正则表达式。我现在想进一步将它限制为只有5个符号的字符串。

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

我试图在最后添加{5}和\ S {5}等等。 它似乎不起作用。什么是达到理想目标的最佳方式?

1 个答案:

答案 0 :(得分:4)

我们可以在字符串的开头使用两个lookaheads。一个用于检查固定长度的5个字符,另一个用于检查至少一个数字。这封信可以在模式中匹配。

zone.js:522 Unhandled Promise rejection: Template parse errors:
The pipe 'orderBy' could not be found ("
        </tr>
        <!--LOOP TO DISPLAY DATA-->
          <tr *ngFor="l[ERROR ->]et x of selectedData | orderBy: {property: column, direction: direction}" >
            <td>
        "): FundingRequestComponent@192:23 ; Zone: <root> ; Task: Promise.then ; Value: 
SyntaxError {__zone_symbol__error: Error: Template parse errors: The pipe 'orderBy' could not be found (" </tr> <!--LOO……}
 Error: Template parse errors:
The pipe 'orderBy' could not be found ("
        </tr>
        <!--LOOP TO DISPLAY DATA-->
          <tr *ngFor="l[ERROR ->]et x of selectedData | orderBy: {property: column, direction: direction}" >
            <td>
  • ^(?=\S{5}$)(?=\D*\d)\d*[a-z][a-z\d]*$ 在5个非空白字符
  • 之后查看(?=\S{5}$)结尾
  • $在任意数量的非数字之后向前看数字
  • (?=\D*\d)匹配任意数量的数字,后跟一个字母和任何alnum

See this demo at regexstorm。无情匹配add the (?i) flag

如何组合前瞻和匹配的内容有不同的选项。另一个是通过使用前瞻来检查数字和alpha并匹配5个字母数字字符。

\d*[a-z][a-z\d]*

或使用一个负面的前瞻与交替。

^(?=\D*\d)(?=\d*[a-z])[a-z\d]{5}$

取决于输入哪一个表现最佳。