当前位置: 首页 > 知识库问答 >
问题:

HTML5模式正则表达式密码匹配

姬国安
2023-03-14

寻找以下规则验证密码的帮助:

8个字符

包含至少1个大写字母

包含至少1个小写字母

包含至少一个数字

不能以数字开头

不包含特殊字符

我已经做到了:

(?=..*\d.*)(?=.[a-z].*)(?=.[a-z].])(?=.[!\35;\$%

但似乎不知道如何让第一个数字与某个数字不匹配,并将特殊字符类设置为不匹配。任何帮助都将不胜感激。


共有3个答案

吕越彬
2023-03-14

怎么样:

pwd.length >= 8 &&
pwd.match(/[A-Z]/) &&
pwd.match(/[a-z]/) &&
pwd.match(/\d/) &&
!pwd.match(/^\d/) &&
!pwd.match(/[!#\$%&\?]/);

以防你需要维护这段代码?

陆绪
2023-03-14

以下是我的观点:

(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.*[!#\$%&\?])^\D.{7}

请注意,* 在每个前瞻性术语之后都是多余的。

(?!…)是一种消极的前瞻,以确保没有特殊字符。

^\D要求第一个字符为非数字。然后我只需要7个字符,因为结尾不是强制的。

但是为什么要从密码中排除特殊字符呢?通常情况下,恰恰相反的做法是被鼓励的。

邹昊
2023-03-14

我发现把它分解成单独的测试是:

  • 更容易编码
  • 更容易阅读
  • 易于维护
  • 当需求发生变化时更加灵活

试试这样的东西:

var testPassword = function (password) {
    var minLengthMet = password.length >= 8,
        hasUpper = (/[A-Z]+/).test(password),
        hasLower = (/[a-z]+/).test(password),
        hasNumber = (/[0-9]+/).test(password),
        letterBegin = (/^[A-Za-z]/).test(password),
        noSpecials = !(/[^A-Za-z0-9]+/).test(password);
    return minLengthMet && hasUpper && hasLower && hasNumber && letterBegin && noSpecials;
};

在这里看到它的实际作用:http://jsfiddle.net/H9twa/

 类似资料:
  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。

  • 问题内容: 我正在制作一个键值解析器,其中输入字符串采用的形式。键可以包含字符,并且和值可以包含任何字符,但,,和需要用反斜杠前缀。逗号用于分隔键值对,但在最后一对之后不需要。 到目前为止,我已经可以匹配大多数键和值,但是很显然它将不能处理多于一对的字符或者任何“控制”字符都不能转义。似乎匹配所有转义字符,但不匹配任何“正常”字符。 有没有办法检查逗号分隔并匹配所有转义的“控制”字符以及普通字符?

  • 有没有一种方法可以在python中编写与以下格式的字符串匹配的正则表达式: 或 在这里,$=表示零或更多的空白可以存在 :来自字符串的固定子集的字符串['feat','fix','docs','断'] :最大长度为n的字符串 :最大长度为m的字符串 前缀应该始终是一个字符串,之后是一些最大q长度的字母数字字符 注意:我们不能省略像应该使用与下面示例中所示完全相同的格式: feat(feat new

  • 我们得到了一些这样的内容:

  • 我需要密码规则。以下是规则。 密码必须遵循以下准则: > 至少有八个字符长 包含这4个选项中的3个:小写字母、大写字母、数字或特殊字符 当用户指定不符合上述规则的密码时,返回消息说明: 密码长度必须至少为8个字符,并包含以下4个选项中的3个: 小写字母(a-z) 大小写字母(A-Z) 数字(0-9) 特殊字符 (! @#$%^ 请帮助我获得一个正则表达式来处理上述条件。 我感谢你的帮助。以下是我的

  • 问题内容: 我在网上找到了一个脚本,并且在JavaScript中有一个密码正则表达式。我仍然想使用它,但是为了获得更高的安全性,我也想使用PHP来验证我的密码,但是我对正则表达式毫无用处。 要求: 必须至少8个字符 必须包含至少1个数字 必须至少包含一个大写字符 必须至少包含一个小写字符 如何构造正则表达式字符串以满足这些要求? 问题答案: 我发现在一个大的正则表达式中执行此操作有点像代码维护的噩