Kir*_*kov 1 .net regex powershell
我有一些由字符和数字以任意顺序形成的数据。一件事是确定它必须同时包含数字和字符。我做了一个匹配这种情况的正则表达式。我现在想进一步介绍一下,并将其限制为仅包含5个符号的字符串。
'1aa21' -match '(\d+)+[a-z]|[a-z]+(\d+)'
Run Code Online (Sandbox Code Playgroud)
我尝试在末尾添加{5},也添加\ S {5},依此类推。它似乎不起作用。什么是达到期望的最佳方法?
我们可以在字符串的开头使用两个先行符。一种用于检查5个字符的固定长度,一种用于检查至少一位数字。字母可以在图案内匹配。
^(?=\S{5}$)(?=\D*\d)\d*[a-z][a-z\d]*$
Run Code Online (Sandbox Code Playgroud)
(?=\S{5}$)$在5个非空格字符之后向前看结尾(?=\D*\d) 在任意数量的非数字之后向前看数字\d*[a-z][a-z\d]* 匹配任意数量的数字,后跟字母和任何数字在regexstorm上观看此演示。对于无用的匹配,请添加(?i)标志。
如何组合前瞻性和匹配项有不同的选择。另一种方法是使用先行符检查数字和字母,并匹配5个字母数字字符。
^(?=\D*\d)(?=\d*[a-z])[a-z\d]{5}$
Run Code Online (Sandbox Code Playgroud)
或交替使用一个负前瞻。
^(?!\d*$|[a-z]*$)[a-z\d]{5}$
Run Code Online (Sandbox Code Playgroud)
取决于输入,哪一个将是最佳性能。