首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要一个数字或一个非字母数字字符的密码的Regex。

问需要一个数字或一个非字母数字字符的密码的Regex。
EN

Stack Overflow用户
提问于 2010-01-04 05:11:33
回答 5查看 9.2K关注 0票数 7

我正在寻找一个相当具体的正则表达式,我几乎有,但不完全。

我想要一个至少需要5个字符的正则表达式,其中至少有一个字符是数字值或非字母数字字符。

到目前为止,这就是我所拥有的:

代码语言:javascript
复制
^(?=.*[\d]|[!@#$%\^*()_\-+=\[{\]};:|\./])(?=.*[a-z]).{5,20}$

所以问题在于“或”部分。它将允许非字母数字值,但仍然需要至少一个数字值.您可以看到,我的要求数字和非字母数字之间有或运算符“\”,但这似乎不起作用。

任何建议都会很好。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-04 08:06:08

尝试:

代码语言:javascript
复制
^(?=.*(\d|\W)).{5,20}$

简短的解释:

代码语言:javascript
复制
^                         # match the beginning of the input
(?=                       # start positive look ahead
  .*                      #   match any character except line breaks and repeat it zero or more times
  (                       #   start capture group 1
    \d                    #     match a digit: [0-9]
    |                     #     OR
    \W                    #     match a non-word character: [^\w]
  )                       #   end capture group 1
)                         # end positive look ahead
.{5,20}                   # match any character except line breaks and repeat it between 5 and 20 times
$                         # match the end of the input
票数 20
EN

Stack Overflow用户

发布于 2010-01-04 05:28:42

也许这对你有用:

代码语言:javascript
复制
^.*[\d\W]+.*$

并使用以下代码检查字符串大小:

代码语言:javascript
复制
if(str.len >= 5 && str.len =< 20 && regex.ismatch(str, "^.*[\d\W]+.*$")) { ... }
票数 1
EN

Stack Overflow用户

发布于 2010-01-04 05:17:13

像这样怎么样?

代码语言:javascript
复制
^.*?[\d!@#$%\^*()_\-+=\[{\]};:|\./].*$

对于长度5,20,请使用正规的strlen函数

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

https://stackoverflow.com/questions/1997616

复制
相关文章

相似问题

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