需要帮助:RegEx获取包含数字和特殊字符的密码

时间:2010-11-19 12:27:48

标签: javascript regex passwords

我需要RegEx的密码帮助。密码必须包含至少一个特殊字符(例如“§$& /!)和一个数字。

E.g。密码如“EdfA433&”必须有效,而“aASEas§ö”不是因为它不包含数字。

到目前为止,我有以下RegEx:

^(?=.*[0-9])(?=.*[a-zA-Z]).{3,}$

但是这个显然只是检查一个数字。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

你最好只使用多个更简单的正则表达式:检查这样的任何代码都不会对性能敏感,并且给定更复杂的正则表达式的额外复杂维护可能是不合理的。

那么,我想要的是:

var valid = foo.match(/[0-9]/) && foo.match(/["§$&/!]/);

我想知道你是否真的想要定义这样的特殊字符:é算作一个特殊字符吗?是否算作特殊角色?

答案 1 :(得分:2)

 ^(?=.*\d)(?=.*\W).{3,}$

检查至少一个数字(\d)和一个非字母数字字符(\W)。 \W\w的倒数,它匹配数字,字母和下划线。

如果要在“特殊字符”列表中包含下划线,请使用

 ^(?=.*\d)(?=.*[\W_]).{3,}$

答案 2 :(得分:1)

我会将检查密码是否“硬”的功能划分到某些部分,在每个部分我会检查一个条件。您可以在每日WTF上看到一些复杂的正则表达式并重置密码:http://thedailywtf.com/Articles/The-Password-Reset-Facade.aspx