至少包含 8 个字符/大写/数字的模式



目前我正在使用symfony2,我需要一种带有条件的模式:-最少 8 个字符,最多 20 个字符-必须至少包含 1 个字母-必须至少包含 1 个数字-可能包含特殊字符,如 !@#$%^&*((_+我尝试了这段代码,但它不起作用:

/**
 * Encrypted password. Must be persisted.
 * @AssertRegex(
 *     pattern     = "/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[?!-‌​/_/=:;§]).{8,20}+$/i",
 *     htmlPattern="/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[?!-‌​/_/=:;§]).{8,20}$/",
 *     match=true,
 *     message="message error ")
 *
 * @var string
 */
protected $password;

你试过这样的事情吗?

/**
 * @AssertRegex(
 *     pattern = "/^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9!@#$%^&*()_]+){8,20}$"/",
 * 
 * rest of options...
 *
 * )
 */

非常感谢你的回答.我不得不覆盖$plainPassword而不是$password的正则表达式,因为我使用的是 FOSuserBundle .

最新更新