跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 正则表达式求助
未分類
11 3 月 2021

正则表达式求助

正则表达式求助

資深大佬 : LeeReamond 4

如题,网站注册密码的要求,我记得是能通过一行正则表达式实现的,但是我比较菜不会写,同时又忘了之前在哪里看到正确版本了。。。烦请有缘人解惑一段神秘代码

要求:实现一段正则表达式匹配以下条件的字符串:

  • 长度大于或等于 8 位
  • 至少包含一位大写字母
  • 至少包含一位小写字母
  • 至少包含一位数字
  • 至少包含一位特殊符号

===================

以上是基础需求,我印象中正则表达式是能实现的。

还有一个进阶需求是仅允许匹配 ascii128 以内的可读范围,即密码中不要出现什么中文之类的特殊符号,这个不知道能不能加入上述正则表达式里。

大佬有話說 (3)

  • 資深大佬 : witfun

    (?=.*d)(?=.*[a-z])(?=.*[A-Z]).{7,15}$
    这个么?网上随便搜了一个

  • 主 資深大佬 : LeeReamond

    @witfun 感谢,自己搜到了
    ‘^’ # begin string
    ‘(?=.*?[A-Z])’ # at least one uppercase letter
    ‘(?=.*?[a-z])’ # at least one lowercase letter
    ‘(?=.*?d)’ # at least one digit
    ‘(?=.*?[[email protected]#$%^&*?])’ # at least one special character
    ‘[A-Za-z[email protected]#$%^&*?]’ # only the given characters
    ‘{8,20}’ # between 8 and 20 characters long
    ‘$’ # end string

  • 資深大佬 : Sunyanzi

    不知道你是什么语言的正则 … 我写个通用的给你 …

    通常情况下像这类需求都是放一堆前瞻 … 我估计你见过的正确版本也是这样 …

    但对密码而言我个人更喜欢反着写 … 如下 …

    /^(.{0,7}|[^A-Z]*|[^a-z]*|[^0-9]*|[a-zA-Z0-9]*)$|[^x20-x7E]+/

    这种写法的好处是看起来更清晰而且更短 … 执行效率理论上也更高一些 …

    前面的五项我是按照你给的顺序写的 … 后面控制了字符范围是 ASCII 32 ~ 127 … 从空格开始 …

    需要注意的是这个正则匹配的是所有不合法的密码 … 只有不匹配才说明字符串满足你的需求 …

    如果你非要正写的版本我也能写 … 打出来费点劲罢了 …

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具