2013-07-25 24 views
0

我无法获得检查密码是否至少有一位数字可用的正则表达式。 这个问题已经得到了解答,但如果分裂,所有的答案都停止了。 例如,在此Working Password Validation如果我删除:密码正则表达式在分裂时无法正常工作

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

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

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

我是新用正则表达式,这似乎是有道理的,但它没有,如果可以的话,让我看看光。

+0

你想做什么?检查密码是否至少有1位数? – Srb1313711

+0

我试图分开错误信息,所以我会有一个大信息而不是多个更具体的信息,即必须有一个数字,然后另一个说,必须有一个小写字母,等等...... –

回答

0

我不确定你的意思是什么整件事停止工作

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

所有上述不被强制要求:

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

所以,没有理由把它们取出来应该破坏任何东西它们是基本上独立的组件。

有无数种方法可以检查String是否包含一个数字。你想如何检查真的取决于你的具体要求。在所呈现的正则表达式中所使用的方法做到这一点通过正向前看:^(?=.*[0-9])

^:始于
*:匹配0或多个非换行符
[0-9]:是这些数字匹配字符类[0,1,2,...,9]
?=是积极向前看,在这种情况下说来匹配当且仅当存在至少一个数量

希望这有帮助。你可以从Oracle's Tutorial on Regular Expressions开始。在您消化完毕后,我确信您可以通过Google找到更多高级资源。

+0

我这也是困难的。我正在使用hibernate 4来验证。在我的bean中,我有@Pattern(regexp =“^(?=。* [0-9])(?= \\ S + $)。{8,} $”,message =“{must.contain.one.digit }“),即使我输入一个字符串说”asd43“它错误说该字符串必须包含一个数字 –

+0

啊,最后我得到它,结果是字符串大小限制造成浩劫需要8位数字。谢谢你的建议,我绝对需要花一些时间与oracle教程 –

+0

@BaradiBaradari没有问题。祝你好运。 –