Php 使用正则表达式验证密码
我正在处理的任务需要使用以下规则验证密码:Php 使用正则表达式验证密码,php,regex,Php,Regex,我正在处理的任务需要使用以下规则验证密码: 必须以大写字母(a-Z)开头 有八个字符(最少) 其中一个字符必须是!^或& 密码必须以数字结尾 这是我到目前为止使用的正则表达式: '/^\p{Lu}(?=.*[!^&])\d$.{8,}$/'; // Start with a capital letter: ^\p{Lu} // At least 8 characters: .{8,} // One of these characters must be a: (?=.*[!^&
- 必须以大写字母(a-Z)开头
- 有八个字符(最少)
- 其中一个字符必须是!^或&
- 密码必须以数字结尾
'/^\p{Lu}(?=.*[!^&])\d$.{8,}$/';
// Start with a capital letter: ^\p{Lu}
// At least 8 characters: .{8,}
// One of these characters must be a: (?=.*[!^&])
// Must end with a number: \d$
八个字符和一个数字的表达式有效,但特殊字符和大写字母不起作用,因此我向专家寻求帮助,他们可以将我推向正确的方向。该模式在开始时已经匹配了一个大写字符,因此应该后跟7个或更多字符,使其至少有8个或更多字符 您还可以在末尾匹配一个数字,然后在它前面匹配6个或更多字符 如果图案至少应包含8个字符,则可以使用:
^\p{Lu}(?=[^!^&]*[!^&]).{6,}\d$
字符串的开头^
匹配任何大写字母\p{Lu}
正向前瞻,断言其中一个(?=[^!^&]*[!^&])
代码>
^
&
匹配任意字符6次或更多次{6,}
匹配字符串末尾的数字\d$
请注意,
匹配任何字符,包括空格。为什么要使用这样的不合标准的模式。这是“家庭作业”吗?它一定是家庭作业,因为在现实世界中,这些限制相当简单,会降低安全性。