正在使用正则表达式验证密码



我正在处理的任务需要使用以下规则验证密码:

  • 必须以大写字母(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$匹配字符串末尾的数字

Regex演示

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

最新更新