我需要RegEx的密码帮助。密码必须包含至少一个特殊字符(例如“§$& /!)和一个数字。
E.g。密码如“EdfA433&”必须有效,而“aASEas§ö”不是因为它不包含数字。
到目前为止,我有以下RegEx:
^(?=.*[0-9])(?=.*[a-zA-Z]).{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