php 正则匹配包含字母、数字以及下划线,且至少包含2种

新系统注册功能需对用户名和密码做以下要求:包含字母、数字以及下划线,且至少包含2种;

在网上没有搜到符合要求的代码,于是自己对他人代码做了一点修改,经测试满足要求。代码如下:

if (!preg_match('/^(?![0-9]+$)(?![_]+$)(?![a-zA-Z]+$)[A-Za-z_0-9]{1,}$/',$string)) {
    return json_encode(['result' => false, 'msg' => '只能包含字母、数字以及下划线,且至少包含2种']);
}
原文地址:https://www.cnblogs.com/zzeng347/p/9876762.html