【问题标题】:Regex for Username and Password verification用于用户名和密码验证的正则表达式
【发布时间】:2015-10-15 03:54:07
【问题描述】:

我需要一个正则表达式来验证用户名和密码。对于用户名,我想允许 A-Z a-Z 0-9 和这些特殊字符:@:. 我尝试使用它:

if(preg_match('/[A-Za-z0-9@:.]/', $username)) {
      $this->err = 'error';
    }

但这不起作用。对于密码,我希望他们至少有一个大写一个小写和一个数字。

【问题讨论】:

  • 好的,我试试看,你有密码验证的正则表达式吗?
  • @JohnConde,情况并非如此,因为. 存在于类中。
  • 嗯,但为什么这不起作用?
  • 你需要锚定它并允许多个。 ^[A-Za-z0-9@:.]+$ if !preg_match 也应该是这样,因为这使它成为有效的通行证,对吗?
  • 谢谢你也有密码验证的正则表达式吗?

标签: php regex


【解决方案1】:

您需要anchor 您的模式并使用前瞻来验证这些情况。

if(preg_match('/^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])[a-zA-Z0-9@:.]+$/', $username)) { ... }

(?= ... ) 是一个零宽度断言,它不消耗字符串上的任何字符。

因此,它只匹配字符串中的一个位置。零宽度点是验证从当前位置向前看是否可以匹配正则表达式,而不增加整体匹配。

【讨论】:

  • 这是您的密码验证for the password i want that they have at least one uppercase one lowercase and a number..
  • 这就是我们有这么多正则表达式问题的原因。
猜你喜欢
  • 2011-07-10
  • 1970-01-01
  • 2014-10-14
  • 2023-03-12
  • 2011-04-17
  • 2018-03-16
  • 1970-01-01
相关资源
最近更新 更多