我有一些由任意随机顺序的字符和数字组成的数据。一件事是肯定它必须同时包含数字和字符。我制作了一个匹配此案例的正则表达式。我现在想进一步将它限制为只有5个符号的字符串。
'1aa21' -match '(\d+)+[a-z]|[a-z]+(\d+)'
我试图在最后添加{5}和\ S {5}等等。 它似乎不起作用。什么是达到理想目标的最佳方式?
答案 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}$
取决于输入哪一个表现最佳。