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

需求:

密码验证改造,要求对所输入的密码校验条件:必填字母数字及特殊字符,且以字母开头。


        @org.junit.Test
	public void testReg() {
		// 必填字母数字特殊字符
		String reg = "^(?![0-9]+$)(?![^0-9]+$)(?![a-zA-Z]+$)(?![^a-zA-Z]+$)(?![a-zA-Z0-9]+$)[a-zA-Z0-9\\S]+$";
		
		System.out.println("123".matches(reg));
		System.out.println("123@@".matches(reg));
		System.out.println("zzzzzzzzzzz".matches(reg));
		System.out.println("zzzzzzzz@@zzz".matches(reg));
		System.out.println("sss123".matches(reg));
		System.out.println("sgg123@@$@".matches(reg));
		System.out.println("sgg@123".matches(reg));
		System.out.println("sgg@.".matches(reg));
	}


常见语法:

^匹配正则的起始位置;

$截止位置;

\\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v];

(?![0-9]+$)不全是数字;

[a-zA-Z][a-zA-Z0-9\\S]必须以英文字母开始;

+出现次数大于等于1;

*出现次数大于0;

剩下的就是逻辑了,自己推算下。


真正的强大扩展还得依靠你自己去写,懂得了语法,写出来想要的自然不是问题了

推荐个正则表达式语法:http://www.runoob.com/regexp/regexp-syntax.html

规则写完还是存在很多优化点,欢迎交流

你可能感兴趣的:(编码,框架,插件,集成,>java)