我正在执行的任务要求使用以下规则验证密码:
这是我到目前为止的正则表达式:
'/^\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$
八个字符和一个数字的表达式有效,但是特殊字符和大写字母不起作用,因此我正在寻求可以将我推向正确方向的专家。
答案 0 :(得分:1)
该模式在开始时已经匹配大写字符,因此应在其后跟随7个或更多字符,以使其至少为8个或更多字符。
您还可以在末尾匹配一个数字,然后可以在其前面匹配6个或更多字符。
如果图案至少应包含8个字符,则可以使用:
^\p{Lu}(?=[^!^&]*[!^&]).{6,}\d$
^
字符串的开头\p{Lu}
匹配任何大写字母(?=[^!^&]*[!^&])
正向前进,断言!
^
&
.{6,}
匹配任意一个字符6次以上\d$
匹配字符串末尾的数字请注意,.
与任何字符匹配,包括空格。