返回

正则表达式教程:密码强度校验

正则表达式

一、正则解释

/^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/
  • ^ :锚定开始
  • *\S ** :匹配任意非空白字符,即字符序列可以是空或包含非空白字符
  • (?=\S{6,}) :正向先行断言,确保字符序列至少有 6 个非空白字符
  • (?=\S\d)* :正向先行断言,确保字符序列包含至少一个数字
  • (?=\S[A-Z])* : 正向先行断言,确保字符序列包含至少一个大写字母
  • (?=\S[a-z])* : 正向先行断言,确保字符序列包含至少一个小写字母
  • (?=\S[!@#$%^&*? ])* : 正向先行断言,确保字符序列包含至少一个特殊字符(包括空格)
  • \S $* :匹配任意非空白字符,即字符序列可以是空或包含非空白字符,并锚定结尾

二、使用场景

此正则表达式可用于:

  • 验证用户密码的强度
  • 确保密码符合安全要求
  • 帮助用户创建更强大的密码

三、代码示例

JavaScript

function validatePassword(password) {
  const regex = /^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/;
  return regex.test(password);
}

Java

import java.util.regex.Pattern;

public class PasswordValidator {

  private static final Pattern PASSWORD_PATTERN = Pattern.compile("^\\S*(?=(\\S{6,})(?=(\\S*\\d)(?=(\\S*[A-Z])(?=(\\S*[a-z])(?=(\\S*[!@#$%^&*? ])\\S*))))");

  public static boolean isValidPassword(String password) {
    return PASSWORD_PATTERN.matcher(password).matches();
  }
}

PHP

<?php

function validatePassword($password) {
  $regex = '/^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$/';
  return preg_match($regex, $password);
}

Python

import re

def validate_password(password):
  regex = r'^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*
import re

def validate_password(password):
  regex = r'^\S*(?=\S{6,})(?=\S*\d)(?=\S*[A-Z])(?=\S*[a-z])(?=\S*[!@#$%^&*? ])\S*$'
  return re.match(regex, password) is not None
#x27;
return re.match(regex, password) is not None

通过使用此正则表达式,您可以验证密码的强度,确保它们符合安全要求。