一、概念
零寬斷言:零寬度的匹配,匹配到的內容不儲存在匹配結果中,最終匹配的結果只是一個位置。
作用:給指定位置新增一個限定條件,用來規定此位置之前或者之後的字元必須滿足限定條件才能使正則中的子表示式匹配成功。
正向零寬斷言: (?=EXP) 該位置後的字元必須滿足EXP
負向零寬斷言: (?!EXP) 該位置後的字元必須不滿足EXP
二、實踐
密碼複雜度:口令長度至少為8位,並由數字、大小字母與特殊字元組成。
數字:(?=.*\d) 包含數字
小寫: (?=.*[a-z])
大寫:(?=[A-Z])
特殊字元:(?=.*[\W_])
所有字元:.
/^(?=.*\d)(?=.*[a-z])(?=[A-Z])(?=.*[\W_]).{8,}$/
測試:
zhju&123 //缺少大寫 false
Zhjun123 //缺少特殊字元 false
Zhjun$%^& //缺少數字 false
Zh$123 //不滿8位 false
Zhju&123 true