看到一个题目是长度为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只允许等宽长度的字串
?