使用正则表达式验证密码

时间:2020-09-10 03:11:29

标签: 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: (?=.*[!^&])
// Must end with a number: \d$

八个字符和一个数字的表达式有效,但是特殊字符和大写字母不起作用,因此我正在寻求可以将我推向正确方向的专家。

1 个答案:

答案 0 :(得分:1)

该模式在开始时已经匹配大写字符,因此应在其后跟随7个或更多字符,以使其至少为8个或更多字符。

您还可以在末尾匹配一个数字,然后可以在其前面匹配6个或更多字符。

如果图案至少应包含8个字符,则可以使用:

^\p{Lu}(?=[^!^&]*[!^&]).{6,}\d$
  • ^字符串的开头
  • \p{Lu}匹配任何大写字母
  • (?=[^!^&]*[!^&])正向前进,断言! ^ &
  • 中的一个
  • .{6,}匹配任意一个字符6次以上
  • \d$匹配字符串末尾的数字

Regex demo

请注意,.与任何字符匹配,包括空格。