【发布时间】:2019-06-10 13:16:28
【问题描述】:
我一直在尝试创建一个可以检测长度在 5-20 个字符之间的字母数字密码的正则表达式。这些密码可以包含特殊字符 (@$!%*#?&£)。我的尝试要么没有检测到我的所有测试用例,要么会产生大量误报。
Regex 目前看起来像这样:
\b(?=.*[a-zA-Z])(?=.*\d*)(?=.*[@$!%*#?&£]*)[a-zA-Z\d@$!%*#?&£]{5,20}(?<![a-zA-Z ])\b
Here is my Regex running on Regexr with my test cases
正则表达式的标准如下:
- 检测长度在 5 到 20 个字符之间的混合字母数字单词
- 检测特殊符号(
@$!%*#?&£等)
在编写原始正则表达式时,我在应用字符边界时遇到了很多问题,比如说如果一个单词是 21 个字符,我根本不希望它被检测到。我基本上只想扫描此长度之间的项目,但此边界已阻止检测到许多匹配项。
获取字符串“Rese7”和“Rese7A”。 第一个字符串匹配 && 第二个不匹配,我怀疑这是因为我如何实现字符检查。我基本上希望正则表达式做以下事情:
- 将单词定义为任意字符(包括特殊字符)
- 查找长度在 5-20 个字符之间的单词
- 检查它们是否是字母数字(
aA-zZ0-9!£$等) - 仅匹配满足此条件的单词
我不确定我是否',考虑到这一点,我查看了其他字母数字密码问题,但答案看起来并不满足我的测试用例:
- There were only 2 regex answers on this but they didnt work in RegExr...
- This isn't complex enough
- Nothing on here worked despite it being well explained
感谢您的帮助!
【问题讨论】: