【发布时间】:2021-12-31 01:21:48
【问题描述】:
我正在为 Web 应用程序的后端构建一个密码验证器,我正在使用非常标准的大写、小写、数字、最小长度和特殊字符要求,并且我正在寻求重构一下正则表达式,所以它更紧凑。有没有一种方法可以搜索任何特殊字符的匹配项,而无需为每个特殊字符编写很长的正则表达式?
r'^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[special chars regex])[\w\d special chars regex]{8,255}$'
到目前为止,我的尝试一直围绕着使用像 \S 这样的否定集来匹配它们的想法,但由于它们也匹配数字,所以它仍然允许没有特殊字符的密码。
编辑:
我对特殊字符的意思可以概括为,我想捕获 ASCII 索引在 33 到 126 之间的字符,不包括字母和数字(数字索引 48 ~ 57,大写字母索引 65 ~ 90,小写字母索引 97 ~ 122字母)因为这些确实是预先存在的正则表达式短手的一部分,例如\w和\d。
这是一个ASCII chart 供参考。
【问题讨论】:
-
您能定义特殊字符的含义吗?
-
很好,我现在将编辑问题以更好地定义它