java 正则表达式_a-z_0-9 validation_Java Regex Password Validation Example

本文介绍了一种使用Java正则表达式进行密码验证的方法,该方法能验证包含字母、数字及特殊字符的密码,并支持设定密码的最大和最小长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当今几乎所有应用程序都需要Password validation 。 通过手动编写所有内容以使用第三方可用的API,可以通过多种方法来验证密码。 在此Java regex密码验证教程中 ,我们正在使用regular expressions构建password validator 。

1. Regex for password validation((?=.*[a-z])(?=.*d)(?=.*[@#$%])(?=.*[A-Z]).{6,16})

上面的正则表达式有以下几节:(?=.*[a-z])  : This matches the presence of at least one lowercase letter.

(?=.*d)     : This matches the presence of at least one digit i.e. 0-9.

(?=.*[@#$%]) : This matches the presence of at least one special character.

((?=.*[A-Z]) : This matches the presence of at least one capital letter.

{6,16}       : This limits the length of password from minimum 6 letters to maximum 16 letters.

前4个部分的顺序可以更改,甚至可以从最终正则表达式中删除。 这个事实可以用来以编程方式构建我们的密码验证器。

2. Java program to validate password using regex

我们正在使验证器可配置,以便可以根据需要设置限制。 就像我们要强制使用至少一个特殊字符而不是任何大写字母一样,我们可以相应地传递所需的参数。package com.howtodoinjava.regex;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class PasswordValidator

{

private static PasswordValidator INSTANCE = new PasswordValidator();

private static String pattern = null;

/**

* No one can make a direct instance

* */

private PasswordValidator()

{

//do nothing

}

/**

* Force the user to build a validator using this way only

* */

public static PasswordValidator buildValidator( boolean forceSpecialChar,

boolean forceCapitalLetter,

boolean forceNumber,

int minLength,

int maxLength)

{

StringBuilder patternBuilder = new StringBuilder("((?=.*[a-z])");

if (forceSpecialChar)

{

patternBuilder.append("(?=.*[@#$%])");

}

if (forceCapitalLetter)

{

patternBuilder.append("(?=.*[A-Z])");

}

if (forceNumber)

{

patternBuilder.append("(?=.*d)");

}

patternBuilder.append(".{" + minLength + "," + maxLength + "})");

pattern = patternBuilder.toString();

return INSTANCE;

}

/**

* Here we will validate the password

* */

public static boolean validatePassword(final String password)

{

Pattern p = Pattern.compile(pattern);

Matcher m = p.matcher(password);

return m.matches();

}

}

3. Unit test password validation

因此,我们的密码验证程序已准备就绪。 让我们用一些JUnit测试用例进行测试。package com.howtodoinjava.regex;

import junit.framework.Assert;

import org.junit.Test;

@SuppressWarnings("static-access")

public class TestPasswordValidator

{

@Test

public void testNormalPassword()

{

PasswordValidator validator = PasswordValidator.buildValidator(false, false, false, 6, 14);

Assert.assertTrue(validator.validatePassword("howtodoinjava"));

Assert.assertTrue(validator.validatePassword("howtodoin"));

//Sort on length

Assert.assertFalse(validator.validatePassword("howto"));

}

@Test

public void testForceNumeric()

{

PasswordValidator validator = PasswordValidator.buildValidator(false,false, true, 6, 16);

//Contains numeric

Assert.assertTrue(validator.validatePassword("howtodoinjava12"));

Assert.assertTrue(validator.validatePassword("34howtodoinjava"));

Assert.assertTrue(validator.validatePassword("howtodo56injava"));

//No numeric

Assert.assertFalse(validator.validatePassword("howtodoinjava"));

}

@Test

public void testForceCapitalLetter()

{

PasswordValidator validator = PasswordValidator.buildValidator(false,true, false, 6, 16);

//Contains capitals

Assert.assertTrue(validator.validatePassword("howtodoinjavA"));

Assert.assertTrue(validator.validatePassword("Howtodoinjava"));

Assert.assertTrue(validator.validatePassword("howtodOInjava"));

//No capital letter

Assert.assertFalse(validator.validatePassword("howtodoinjava"));

}

@Test

public void testForceSpecialCharacter()

{

PasswordValidator validator = PasswordValidator.buildValidator(true,false, false, 6, 16);

//Contains special char

Assert.assertTrue(validator.validatePassword("howtod@injava"));

Assert.assertTrue(validator.validatePassword("@Howtodoinjava"));

Assert.assertTrue(validator.validatePassword("howtodOInjava@"));

//No special char

Assert.assertFalse(validator.validatePassword("howtodoinjava"));

}

}

在这篇文章中,我们学习了使用Java正则表达式进行密码验证的方法,该规则能够验证字母数字和特殊字符,包括最大和最小密码长度。

Java的String类中,处理文件名和邮箱验证通常涉及到对字符串内容的一些特定模式匹配,这可以借助正则表达式(Regular Expression)来完成。正则表达式是一种强大的文本匹配工具,用于描述字符串中字符的规律。 **文件名验证** 1. 检查是否包含非法字符:例如,排除路径分隔符(如斜杠`/`、反斜杠`\`),以及不允许的特殊字符(如空格、#等)。正则表达式可能是 `/[^\/\\ .\*?:"<>|]+$/`,它允许点`.`、下划线 `_` 和字母数字字符,并且结束于路径的结尾。 **邮箱验证** 2. 验证电子邮件地址的格式:标准的正则表达式可能是 `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`。这个正则表达式包括了用户名部分(允许点、下划线、加号、减号)、@符号,域名部分(由点分隔的字母数字组合),以及顶级域名(如`.com`, `.org`等)。 使用Java的`Pattern`和`Matcher`类来进行这样的验证: ```java import java.util.regex.Pattern; import java.util.regex.Matcher; public class Validation { public static boolean isValidFileName(String fileName) { Pattern pattern = Pattern.compile("/[^\/\\ .\*?:"<>|]+$/"); Matcher matcher = pattern.matcher(fileName); return matcher.matches(); } public static boolean isValidEmail(String email) { Pattern pattern = Pattern.compile("^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"); Matcher matcher = pattern.matcher(email); return matcher.matches(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值