看到一个题目是长度为8的密码, 必须至少含有一个大写字母、一个小写字母和一个数字, 找到这个正规表达式, ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8}$ 有几个地方不懂想请问, (1)?=这部分是Positive lookahead,查了一下它的定义是: Positive lookahead works just the same. q(?=u) matches a q that is followed by a u, without making the u part of the match. 所以第一个括号里,是 .*\d 这一部分被视为u吗?这样的话q是指哪部分呢? 对第二个括号来说,它前面的(?=.*\d)被视为q吗?还是每个括号都是独立的分组? 还是说因为lookahead本身不会消耗字符,所以在没有 q的情况下,就把它当作是一个 判断句来用这样? (2).*用来匹配所有东西,那为什么后面还跟着\d?我现在的理解是,假设"abFj45dE" 是我要比对的密码,比对到4这个数字时,abFj就是.*的部分吗?也就是说必须符合一 串字符之后必须0-9之间的数字这样?还是说(?=.*)本身就是一个特定的写法? (3)另外根据语言的不同,是不是有些正规表达式中lookbehind只允许等宽长度的字串 ?