java正则校验,密码必须由字母和数字组成

转载 2016年08月30日 18:02:28

一个匹配数字和字母密码的正则表达式

2011 年 12 月 14 日 | Filed under: 正则表达式 and tagged with: 密码 , 正则表达式 , 零宽断言

一个用户注册功能的密码有如下要求:由数字和字母组成,并且要同时含有数字和字母,且长度要在8-16位之间。

如何分析需求?拆分!这就是软件设计的一般思路了。于是乎,拆分需求如下:
1,不能全部是数字
2,不能全部是字母
3,必须是数字或字母
只要能同时满足上面3个要求就可以了,写出来如下:

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$

分开来注释一下:
^ 匹配一行的开头位置
(?![0-9]+$) 预测该位置后面不全是数字
(?![a-zA-Z]+$) 预测该位置后面不全是字母
[0-9A-Za-z] {8,16} 由8-16位数字或这字母组成
$ 匹配行结尾位置

注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。

测试用例如下:

public class Test {
	public static void main(String[] args) throws Exception {
		String regex = "^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$";		

		String value = "aaa";  // 长度不够
		System.out.println(value.matches(regex));

		value = "1111aaaa1111aaaaa";  // 太长
		System.out.println(value.matches(regex));

		value = "111111111"; // 纯数字
		System.out.println(value.matches(regex));

		value = "aaaaaaaaa"; // 纯字母
		System.out.println(value.matches(regex));

		value = "####@@@@#"; // 特殊字符
		System.out.println(value.matches(regex));

		value = "1111aaaa";  // 数字字母组合
		System.out.println(value.matches(regex));

		value = "aaaa1111"; // 数字字母组合
		System.out.println(value.matches(regex));

		value = "aa1111aa";	// 数字字母组合
		System.out.println(value.matches(regex));

		value = "11aaaa11";	// 数字字母组合
		System.out.println(value.matches(regex));

		value = "aa11aa11"; // 数字字母组合
		System.out.println(value.matches(regex));
	}
}

Java中过滤出字母、数字和中文的正则表达式

Java中过滤出字母、数字和中文的正则表达式

Input 只能输入数字,数字和字母等的正则表达式

JS只能输入数字,数字和字母等的正则表达式 JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) 2.只能输入数字,能输小数点. 3.数字和小数点方法二...

Java - 正则表达式的运用(Pattern模式和Matcher匹配)—— 匹配中文,英文字母和数字及_长度详解——收集资源blog

java.util.regex.Pattern   模式类:用来表示一个编译过的正则表达式。 java.util.regex.Matcher   匹配类:用模式匹配一个字符串所表达的抽象结果。 二、先...

java 匹配数字、英文字母、汉字的正则表达式

代码很简单,详见注释。
  • zhaizu
  • zhaizu
  • 2013年09月03日 17:30
  • 11571

正则表达式 匹配中文,英文字母和数字及_长度详解

http://www.juapk.com/thread-2472-1-1.html 匹配中文:[\u4e00-\u9fa5]  英文字母:[a-...

java正则验证密码必填字母数字特殊字符及扩展

需求: 密码验证改造,要求对所输入的密码校验条件:必填字母数字及特殊字符,且以字母开头。 @org.junit.Test public void testReg() { ...
  • zqbx7
  • zqbx7
  • 2016年12月17日 18:15
  • 3596

java判断字符串是否为数字或中文或字母

1.判断字符串是否仅为数字: 1>用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = str.length()...

JAVA正则表达式校验密码实战实例

之前开发一个密码校验工具,主要用正则表达式实现,本来计划2个小时完成,结果确用了10个小时左右(通过周末加班搞定),期间遇到一些问题,也有一些收获,针对正则表达式的实战应用自己抽空做了一个总结,近期想...

JAVA中校验密码的正则表达式

正则表达式是一种描述字符串集合的方法,它是以字符串集中各字符串的共有特征为依据的。正则表达式可以用于探索、编辑或者操作文本和数据。它超出了java程序设计语言的标准语法,因此有必要去学习特定的语法来构...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java正则校验,密码必须由字母和数字组成
举报原因:
原因补充:

(最多只允许输入30个字)