gpt4 book ai didi

正则表达式不将下划线识别为特殊字符

转载 作者:行者123 更新时间:2023-12-02 18:35:53 25 4
gpt4 key购买 nike

/(?=^.{8,}$)(?=.*[_!@#$%^&*-])(?=.*\d)(?=.*\W+)(?![.\n])(?=.*[a-z])(?=.*[A-Z]).*$/

我正在尝试制作一个用于密码验证的正则表达式,以便密码必须至少为 8 个字符,并包含 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。它工作正常,只是它不会将下划线 (_) 识别为特殊字符。即,Pa$$w0rd 匹配,但 Pass_w0rd 不匹配。想法?

最佳答案

正则表达式的这一部分似乎正在寻找特殊字符:

(?=.*[!@#$%^&*-])

请注意,字符类不包含下划线,请尝试将其更改为以下内容:

(?=.*[_!@#$%^&*-])

您还需要修改或删除正则表达式的这部分:

(?=.*\W+)

\W 相当于 [^a-zA-Z0-9_],因此如果下划线是唯一的特殊字符,正则表达式的这一部分将导致它失败。相反,将其更改为以下内容(或将其删除,它是多余的,因为您之前已经检查过特殊字符):

(?=.*[^\w_])

完整的正则表达式:

/(?=^.{8,}$)(?=.*[_!@#$%^&*-])(?=.*\d)(?=.*[^\w_])(?![.\n])(?=.*[a-z])(?=.*[A-Z]).*$/

关于正则表达式不将下划线识别为特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10888814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com