正则关于特殊字符下划线_的 校验
问题:最近测试提了个关于密码格式校验的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}/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步