【发布时间】:2014-09-29 18:19:52
【问题描述】:
我曾想过使用 preg_match() 来检查密码是否输入正确。我想要至少 1 个大写字母、至少 1 个小写字母、至少一个数字和至少一个特殊字符。这是我正在使用的:
$pattern = "(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$";
这个正则表达式在 HTML 的“模式”字段中运行良好。但我需要确保它也针对旧版浏览器进行了验证。
我的 PHP 代码是这样的:
if (!(preg_match($pattern, $loginpassword))) {echo "Password must include one uppercase letter, one lowercase letter, one number, and one special character such as $ or %."; die;}
我认为它工作得很好,除了当我使用密码 1@abcdeF 时它也无法匹配。 php 代码似乎可以工作,但没有密码匹配,即使它应该符合模式。 HTML5 会让它通过,所以我怀疑 regex 语句是正确的,但我在 PHP 中的设置存在缺陷。谁能看到我错过了什么?
【问题讨论】:
-
在您的问题中包含错误消息。很明显,这个代码示例会抛出错误。
-
@Evert,我没有收到任何错误消息。只是不匹配。代码一切正常。抱歉,我会将“失败”编辑得更具体,以便清楚。