首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex -国际密码匹配表达式

Regex -国际密码匹配表达式
EN

Stack Overflow用户
提问于 2017-12-08 10:24:35
回答 1查看 114关注 0票数 3

我正在尝试组成一个模式,它与任何语言中的密码相匹配。

比赛要求是:-

  • 1名上Char (民)
  • 1名下查(民)
  • 1位数字(最低)
  • 1文号(Min)
  • 8个字符长度或以上

我相信你可以从我下面的模式中看到,我迷路了!!

/^(?=.*[\p{Ll}])(?=.*[\p{Lu}])(?=.*\p{Nd})(?=.*[@$!%*?&])[\p{Lu}\p{Ll}\p{Nd}$@$!%*?&]{8,}$/u

测试字符串

  1. 关键字157关$89
  2. P455word123!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-08 10:28:48

\p{Lu}匹配大写Unicode字母,\p{Ll}匹配小写Unicode字母。中文字母是无纸化的,它们可以与\p{L} (以及所有其他字母)匹配。

在消费部分使用\p{L}

代码语言:javascript
复制
/^(?=.*\p{Ll})(?=.*\p{Lu})(?=.*\p{Nd})(?=.*[@$!%*?&])[\p{L}\p{Nd}@$!%*?&]{8,}$/u
                                                      ^^^^^

这个regex演示

注意,密码仍然必须有大写字母和小写字母。如果您只想要求一个中文字母或大写小写字母,请使用

代码语言:javascript
复制
/^(?:(?=.*\p{Han})|(?=.*\p{Ll})(?=.*\p{Lu}))(?=.*\p{Nd})(?=.*[@$!%*?&])[\p{L}\p{Nd}$@!%*?&]{8,}$/u
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

在这里,(?:(?=.*\p{Han})|(?=.*\p{Ll})(?=.*\p{Lu}))需要一个中文字母(\p{Han})或一个uppercase+lowercase字母。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47712328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档