【发布时间】:2018-03-21 09:26:40
【问题描述】:
这是一个网站链接,用于验证和检查正则表达式是否正常工作: https://regex101.com/
这是我目前使用的正则表达式:
/(?=[\x21-\x7e]{8,20})(?=[^0-9]*[0-9])(?=[^a-z]*[a-z])(?=[^A-Z]*[A-Z]).*/g
这是我正在测试的文本:
"1abcderfggdgf sdvhbsdifsdfsdf1 Ghhuidicbdbuhbdc bhdbcdbebvuheY uuvvvyuv1G 1Guhuuuyuyuby Y%*&^$^%^(^(GVGVYUKVYTUHBKBUFygyygyg
ebfuiuberiueu23423HHII"
这就是我认为这样做的:
- 希望匹配索引在 33 到 126 之间且长度在 8-20 之间的任何 ascii 字符
- 查找在数字 0 次或更多次之前的非数字(从我读到的内容,这显然可以检测到是否存在数字)
- 检查在我的 0 个或多个非小写字母之前的小写字母。
- 用大写字母做同样的事情^^
- 使用 ".*" 将其作为任意字符 0 次或更多次,因为通过前瞻,它们应该缩小范围,因此不是每个字符都被允许并且它应该匹配前瞻选择的内容
这就是我想要它做的:
验证遵循这些细节的密码 -
- 必须至少有 1 个小写字母
- 必须至少有 1 个大写字母
- 必须至少有 1 个号码
- 长度只能介于 8 - 20 个字符之间
- ascii 中的字符只能是 33 到 126,不包括空白字符 (我从哪里得到这个?-https://kb.wisc.edu/page.php?id=4073)
补充说明:
我一直在正则表达式末尾使用全局 (?thing) 来指定不要在第一次匹配时停止我认为对于我的密码字段我不需要这个,因为它应该只限于 20 个字符。(我不确定)
检测一个字符是否连续使用超过 3 次也很酷,但目前没有必要。
密码输入到我的 php 文件中的表单中。 我试图将其用作输入标签的验证器。
目前还没有代码不允许使用空格。
【问题讨论】:
-
您的正则表达式至少看起来是正确的。您的确切问题是什么?
-
我的问题是什么是我正在寻找的正确的正则表达式以及它是如何工作的“$” 字符在代码中似乎不匹配任何东西
-
标题中的“im”是什么意思?
-
这是在挖苦我吗?我草率的写作方式我是或我是。
-
@guest271314 得到了你的评论我还不能投票,在阅读之后我意识到这个评论可能不被鼓励,或者仍然认为我的感谢是有效的,即使它违反了网站指南,因为你刚刚写了一个对我很有帮助的答案,就像其他人猜测的那样,当我得到足够的分数时,我可以投票以表示感谢,哈哈
标签: javascript regex html passwords