我的密码字段需要
我正在使用:
(?=.*\d).{5,8}
现在令人不安的部分是方式,这里使用正面条件测试,其次是{}之前的点。谁能解释一下?
答案 0 :(得分:1)
正向前瞻是一个锚点:这里它将匹配一个位置,其中后面是一组任意字符(.*
)后跟一个数字(\d
)。
从这个位置开始,应该有任何字符(.
),5到8次({5,8}
)。
请注意,作为锚点的正向前瞻不消耗任何角色:这就是它起作用的原因。另请注意,正则表达式引擎将始终尝试找到最左边的匹配。
最后,正则表达式也应该锚定在开头和结尾(即^(?=.*\d).{5,8}$
),否则它可能匹配输入中的任何位置:原始正则表达式匹配joizjoeijoiu4ijojiar
,而不关心指定的长度({5,8}
),只要在输入中找到一个数字。前瞻符合joizjoeijoiu4
,.{5,8}
符合joizjoei
。