Regex 用于检测长度为10-20且至少需要3个大写字母和其他条件的字符串-数字组合的正则表达式

Regex 用于检测长度为10-20且至少需要3个大写字母和其他条件的字符串-数字组合的正则表达式,regex,Regex,正如标题所说,我需要一个正则表达式来检测长度为10-20的字符串和数字的组合,并且需要至少有3个大写字母和2个小写字母,同时忽略任何特殊字符 它应该匹配什么 https://youtube.com/abcDeFF1234|在此序列中,仅应匹配abcDeFF1234 sasdasxadis3fsc | 5MkCDXlmvWYLJGxD | | sknsnsjs在此序列中,仅应匹配5MkCDXlmvWYLJGxD ABCab1asuxhausihx在这个序列中,所有内容都应该匹配 “嘿,伙计们,看看

正如标题所说,我需要一个正则表达式来检测长度为10-20的字符串和数字的组合,并且需要至少有3个大写字母和2个小写字母,同时忽略任何特殊字符

它应该匹配什么

https://youtube.com/abcDeFF1234|
在此序列中,仅应匹配abcDeFF1234

sasdasxadis3fsc | 5MkCDXlmvWYLJGxD | | sknsnsjs
在此序列中,仅应匹配5MkCDXlmvWYLJGxD

ABCab1asuxhausihx
在这个序列中,所有内容都应该匹配 “嘿,伙计们,看看这太酷了!”在这个序列中,只有ABCDEFF1234应该匹配

它不应该匹配的内容

DDD

abcA | CDA1123|

其他信息

如果这有帮助,正则表达式
/(?=.[A-Z].[A-Z].[A-Z])(?=\d*[A-Za-Z])(?=[A-Za-Z]*\d)[A-Za-z0-9]{10,20}\b/
已经满足了大多数要求,但在
sasdasxadis3fsc | 5MkCDXlmvWYLJGxD | | sknsnsjsjs
的情况下,它与sasdasxadis3fsc匹配,而不是与5mdxvwylfjgjgp匹配

\b(?=([a-z\d]*[A-Z]){3})(?=([A-Z\d]*[a-z]){2})[a-zA-Z\d]{10,20}\b

您的问题是look aheads中的点应该是一个允许字符的字符类,否则look ahead将超出匹配的术语末尾。例如我改变了:

(?=(.*[A-Z]){3})
致:


如果您正在使用.net flavorCapture,为什么不试试RegexOptions.RightToleft组1和2正在捕获额外的内容,比如在SisnsJSJ8282 | | | | | 5MkCDXlmvWYLJGxD | | | | | SknsJSJSJS什么?整个比赛就是你的目标。如果确实不想捕获组,请在括号内的前两个字符中添加
?:
,使其成为非捕获组。例如
(?=(?:[a-z\d]*[a-z]){3})
是的,我意识到,对不起,我只是傻了如果这有帮助,这里有一个链接到非捕获版本,如果演示:
(?=([a-z\d]*[A-Z]){3})