gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:34:34 24 4
gpt4 key购买 nike

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

  • 最少 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com