【发布时间】:2010-11-19 12:27:48
【问题描述】:
我需要有关 RegEx 密码的帮助。密码必须至少包含一个特殊字符(如“§$&/!)和一个数字。
例如像“EdfA433&”这样的密码必须有效,而“aASEas§ö”则不是,因为它不包含数字。
到目前为止,我有以下 RegEx:
^(?=.*[0-9])(?=.*[a-zA-Z]).{3,}$
但这显然只是检查一个数字。有人可以帮忙吗?
【问题讨论】:
标签: javascript regex passwords
我需要有关 RegEx 密码的帮助。密码必须至少包含一个特殊字符(如“§$&/!)和一个数字。
例如像“EdfA433&”这样的密码必须有效,而“aASEas§ö”则不是,因为它不包含数字。
到目前为止,我有以下 RegEx:
^(?=.*[0-9])(?=.*[a-zA-Z]).{3,}$
但这显然只是检查一个数字。有人可以帮忙吗?
【问题讨论】:
标签: javascript regex passwords
您最好只使用多个更简单的正则表达式:任何检查此类内容的代码都不会对性能敏感,并且给定更复杂的正则表达式的额外维护复杂性可能是不合理的。
那么,我要做什么:
var valid = foo.match(/[0-9]/) && foo.match(/["§$&/!]/);
我想知道您是否真的想定义这样的特殊字符:é 算作特殊字符吗? ~ 算不算特殊字符?
【讨论】:
^(?=.*\d)(?=.*\W).{3,}$
检查至少一位数字 (\d) 和一位非字母数字字符 (\W)。 \W 是 \w 的倒数,它匹配数字、字母和下划线。
如果要在“特殊字符”列表中包含下划线,请使用
^(?=.*\d)(?=.*[\W_]).{3,}$
【讨论】:
我会将检查密码是否“硬”的功能分成几个部分,在每个部分中我会检查一个条件。您可以在 Daily WTF 上看到一些复杂的正则表达式,并重置密码:http://thedailywtf.com/Articles/The-Password-Reset-Facade.aspx
【讨论】: