【发布时间】:2017-03-30 11:37:33
【问题描述】:
我有这个功能:
public static function encPasswordCheckFailed($password)
{
if (!preg_match('/[A-Z]+/', $password)){
return true;
}
if (!preg_match('/[a-z]+/', $password)){
return true;
}
if (!preg_match('/[0-9]+/', $password)){
return true;
}
if (!preg_match('/[!@#$%^&*()-+<>]+/', $password)) {
return true;
}
return false;
}
现在我想强制用户至少拥有 1 个大写字母、1 个小写字母、1 个数字和 1 个特殊字符。
我遇到了这个问题:
if (!preg_match('/[!@#$%^&*()-+<>]+/', $password)) {
return true;
}
所有其他要求都有效。我只有特殊字符的问题。
谁能告诉我这些特殊字符的正确模式:!@#$%^&*()-+<>
【问题讨论】:
-
一见钟情.. 避开
-,尽管在这种情况下它并没有那么有害。究竟是什么不工作? -
看看 Doruk Ayar 的回答。您必须为正则表达式转义 () 特殊字符才能将它们“视为”字符。
-
转义破折号(即
[!@#$%^&*()\-+<>])或将其移动到开头[-!@#$%^&*()+<>*]或结尾@987654331@ -
答案是:将
-放在字符类的末尾/开头,以防它在单独的字符之间创建一个范围。或者转义连字符。
标签: php regex validation