如何解决密码正则表达式
| 我需要提出一个正则表达式来验证符合以下要求的字符串: 仅包含字母数字和以下特殊字符:!@#$%^&* 至少包含以上列表中的1个特殊字符 所需的特殊字符可以出现在字符串中的任何位置(例如:!abc,a!bc,abc!) 我一直很近,但是在其中一种情况下失败了。 谢谢!解决方法
您要查找的正则表达式为:
/^(?=.*[!@#$%^&*])[A-Za-z0-9!@#$%^&*]+$/
这将确保使用正向提前(?=)字符串包含您的特殊字符之一。
- 编辑 -
似乎Bohemian决定完全忽略我的回答的注释部分,并编辑了上面的示例以删除其“不必要的”字符转义符。我真的希望他没有,因为我相信我的辩解是正确的,但是你有。我最初的示例是:
/^(?=.*[\\!\\@\\#\\$\\%\\^\\&\\*])[A-Za-z0-9\\!\\@\\#\\$\\%\\^\\&\\*]+$/
, ^(?=.*?[!@#$%\\^&*])((?!_)[\\w!@#$%\\^&*])+$
它看起来可以确保在字符串的任何位置都可以找到特殊字符。一旦找到它,它就会与字符串的其余部分匹配,只要该字符串仅由文字字符,数字和特殊字符组成即可。
编辑:negativelookahead防止_(下划线)。
, 假设您希望最低要求为“至少一个非字母数字字符,至少8个字符”。使用两个前瞻:
^(?=.*[^a-zA-Z0-9])(?=.{8,}$)
除此之外-让用户选择自己喜欢的密码。
, 这似乎正在工作:
^.*(?=.*[a-zA-Z])(?=.*[!@#$%^&*]).*$
如果还要设置最小长度,请使用此长度(最小10个字符):
^.*(?=.{10,})(?=.*[a-zA-Z])(?=.*[!@#$%^&*]).*$
见红宝石
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。