两个preg_match功能,有什么区别


Two preg_match functions, whats the difference

有人愿意向我解释下面两个函数之间的区别(如果有的话)吗?我已经使用第一个来验证密码有一段时间了。做了一点阅读后,我的头脑现在告诉我第二个函数做完全相同的事情?

preg_match("/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,}$/", $string);

重写:

preg_match("/[a-zA-Z0-9]{6,}/", $string);

任何解释都值得赞赏。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{6,}$/ - 6 个字符,至少包含一个数字、大写和小写

/[a-zA-Z0-9]{6,}/ - 包含 6 个或更多字符的子字符串,必须是大写、小写或数字

  • aA1___仅与第一个匹配
  • 111111仅与第二个匹配

请注意,强制实施更强的规则可能会导致密码变弱 - xkcd