【发布时间】:2015-02-03 09:57:14
【问题描述】:
在 Twitter 上看到了一个挑战,所以我一直在努力克服它,当然我在正则表达式方面并不是最擅长的。这是我目前所拥有的:
var pass_regex = new RegExp(/^[a-z][A-Z][0-9]|[!@#$%^&*()_]+$/);
我正在尝试匹配包含以下内容的密码输入:
- 1 个小写字母
- 1 个大写字母
- 1 位数字或特殊字符
我被卡住的地方是“或”部分,我认为 [0-9] 和我的特殊字符集之间的管道分隔符会起作用,但似乎不起作用。试图更好地理解如何使用正则表达式来检查 1 位数字或 1 个特殊字符。提前感谢您提供的任何帮助。
【问题讨论】:
-
你的意思是至少一个还是正好一个。
-
挑战的确切说明是“密码必须至少包含一个小写字符、一个大写字符和一个数字或特殊字符。”
-
为了可读性和可维护性,建议在单独的单元中编写规则。
passwd.match(/[a-z]/) && passwd.match(/[A-Z]/) && ( passwd.match(/0-9/) || passwd.match(/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/) )
标签: javascript regex