正則關於特殊字元下劃線_的 校驗

Neon1204發表於2024-06-25

問題:最近測試提了個關於密碼格式校驗的bug,要求 “輸入8-16位字元,需包含字母、數字、特殊字元三種型別”
密碼都符合要求,但是含有_就提示錯誤
定位問題:應該是正則的有問題
解決:
在正規表示式 /(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[^\w\s]).{8,16}/ 中,[^\w\s] 表示匹配任何非單詞字元和非空白字元。這裡的 w 代表單詞字元,即字母、數字及下劃線 _,而 \s 代表空白字元。因此,[^\w\s] 將匹配非字母、非數字、非下劃線和非空白的字元。

問題在於,正規表示式中的特殊字元列表沒有包含下劃線 。要解決這個問題,可以將正規表示式修改為包含下劃線 _ 作為特殊字元。但是,由於 _ 在正規表示式中是一個特殊字元,代表字面量下劃線,所以需要使用兩個反斜槓 \ 來表示字面量下劃線。

最終修改後的正則
const reg = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^a-zA-Z\d\s]).{8,16}/

相關文章