php - 字符串的正则表达式,必须至少包含 14 个字符,其中至少 2 个是数字,至少 6 个是字母

标签 php javascript regex

我需要一个正则表达式来测试一个字符串

  • 最少 14 个字符 - 有效字符为 A-Za-z0-9#,.-_
  • 这 14 个字母中至少有 6 个字母
  • 这 14 个数字中至少有 2 个

有没有一种方法可以将其包装在一个正则表达式中(目前我有一个 javascript 和 php 函数执行三个单独的测试,一个是总共 14 个,另一个是至少有两个数字,另一个是至少有 6 个字母。

所以以下内容是有效的:

  • blabla2bla2f54a(有效 > 总共 14 个,至少有 6 个字母,至少有 2 个数字)
  • thisIsNotValidAtAll(无效,因为少于 2 个数字)

最佳答案

简单!首先让我们看一下 PHP 中的注释版本:

$re = '/# Match 14+ char password with min 2 digits and 6 letters.
    ^                       # Anchor to start of string.
    (?=(?:.*?[A-Za-z]){6})  # minimum of 6 letters.
    (?=(?:.*?[0-9]){2})     # minimum of 2 numbers.
    [A-Za-z0-9#,.\-_]{14,}  # Match minimum of 14 characters.
    $                       # Anchor to end of string.
    /x';

这是 JavaScript 版本:

var re = /^(?=(?:.*?[A-Za-z]){6})(?=(?:.*?[0-9]){2})[A-Za-z0-9#,.\-_]{14,}$/;

附录 2012-11-30

我注意到这个答案最近得到了赞成票。这使用了一个更过时的表达式,所以我认为是时候用更好的表达式更新它了。

=== 更高效的表达式 ===

通过完全摆脱“点星”并贪婪地应用更精确的表达式(否定 char 类),一个更有效的解决方案结果:

$re = '/# Match 14+ char password with min 2 digits and 6 letters.
    ^                              # Anchor to start of string.
    (?=(?:[^A-Za-z]*[A-Za-z]){6})  # minimum of 6 letters.
    (?=(?:[^0-9]*[0-9]){2})        # minimum of 2 numbers.
    [A-Za-z0-9#,.\-_]{14,}         # Match minimum of 14 characters.
    $                              # Anchor to end of string.
    /x';

这是新的 JavaScript 版本:

var re = /^(?=(?:[^A-Za-z]*[A-Za-z]){6})(?=(?:[^0-9]*[0-9]){2})[A-Za-z0-9#,.\-_]{14,}$/;

  • 编辑 1:将 #,.-_ 添加到有效字符列表中。
  • 编辑 2:将 greedy 更改为 lazy 星。
  • 编辑 2012 年 11 月 30 日:添加了替代版本,其中“lazy-dot-star”替换为更高效的greedy应用更精确的表达式。

关于php - 字符串的正则表达式,必须至少包含 14 个字符,其中至少 2 个是数字,至少 6 个是字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5527191/

相关文章:

java - 如何使用正则表达式限制生成的文件名只能包含 20 个字符?

php - 从 javascript 检索后,PHP 数组中仅返回 1 个字符,而不是整个单词

javascript - 使用 Oracle ADF 时,如何设法检测特定输入文本上按下的按键

php - 通过PHP递归删除匹配文件

php - 使用 "%"从 SQL 查询中得到奇怪的结果

JavaScript 未按顺序运行

Jquery 验证来验证 URL

php - 正则表达式 : same character 3 times

javascript - JS/JQUERY - 单击每个产品购买按钮时显示模式

php - 如何使用脚本在本地创建网站图标?