在Twitter上看到了一个挑战,所以我一直在努力通过它,认为我不是最好的正则表达式。这就是我到目前为止所做的:
var pass_regex = new RegExp(/^[a-z][A-Z][0-9]|[!@#$%^&*()_]+$/);
我正在尝试匹配包含以下内容的密码输入:
我遇到的问题是'OR'部分,我认为[0-9]和我的特殊字符集之间的管道分隔符可以工作但似乎没有。试图更好地理解如何使用正则表达式来检查1位数或1个特殊字符。提前感谢您提供的任何帮助。
答案 0 :(得分:2)
Atleast one:
您需要使用基于前瞻性的正面regex来检查多个条件。
^(?=.*?[A-Z])(?=.*?[a-z]).*?[\W\d].*
OR
^(?=.*?[A-Z])(?=.*?[a-z]).*?[!@#$%^&*()_\d].*
(?=.*?[A-Z])
断言必须至少有一个大写字母。(?=.*?[a-z])
至少一个小写字母。.*?
任意字符的非贪婪匹配零次或多次。[!@#$%^&*()_\d]
中的单个字符。此列表中的\d
匹配任何数字字符。.*
匹配以下零个或多个字符。