0

我无法得到一个正则表达式来检查密码是否至少有一个数字可以工作。这已在任何地方得到解答,但如果分开,所有答案都会停止工作。例如,在此工作密码验证中,如果我删除:

(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}$

为了检查单个数字的存在,整个事情停止工作

我是正则表达式的新手,这似乎有道理,但事实并非如此,如果可以的话,请告诉我。

4

1 回答 1

0

我不太确定你所说的整个事情都停止工作是什么意思。

(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])

以上所有内容都是强制要求:

  1. 小写字母必须至少出现一次
  2. 大写字母必须至少出现一次
  3. 任何一个@#$%^&+=必须至少出现一次

因此,没有理由将它们取出会破坏任何东西——它们本质上是独立的组件。

有多种方法可以检查 a 是否String包含数字。您要如何检查实际上取决于您的具体要求。所呈现的正则表达式中使用的方法通过积极展望来做到这一点:^(?=.*[0-9])

^ :以
.* 开头:匹配 0 个或多个非换行符
[0-9]:是匹配数字 [0,1,2,...,9] 的字符类
?= 是正向预测,在这种情况下,如果存在至少一个数字,则表示匹配

希望有帮助。您可以从Oracle 的正则表达式教程开始。在你消化之后,我相信你将能够通过谷歌找到更高级的资源。

于 2013-07-25T11:54:22.260 回答