Android密码约束规则例子一

Android常用的一个密码规则

(一)密码必须是8至16位;
(二)密码必须包含英文字母和数字;
(三)密码不能包含4位连续相同的字符,如0000或AAAA;
(四)密码不能包含4位连续递增或连续递减的数字或字母,如1234或ABCD。

package Test;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {

	private static boolean isFourDigtialDec(String str){
		if (str == null || str ==""){
			return true ;
		}

		//String regEx="(?<=\\d|^)(?:(?:9(?=8|\\d))?(?:8(?=7|\\d))?(?:7(?=6|\\d))?(?:6(?=5|\\d))?(?:5(?=4|\\d))?(?:4(?=3|\\d))?(?:3(?=2|\\d))?(?:2(?=1|\\d))?(?:1(?=0|\\d))?(?:0(?=\\d|$))?)(?=\\d|$)";
		String regEx="^\\d(?:(?<=1)0|(?<=2)1|(?<=3)2|(?<=4)3|(?<=5)4|(?<=6)5|(?<=7)6|(?<=8)7|(?<=9)8){3}$";

		Pattern   p   =   Pattern.compile(regEx);
		Matcher   m   =   p.matcher(str);
		if (m.find()){

			return true ;
		}
		return false  ;
	}
	private static boolean isFourDigtialAdd(String str){
		if (str == null || str ==""){
			return true ;
		}

		String regEx="^\\d(?:(?<=0)1|(?<=1)2|(?<=2)3|(?<=3)4|(?<=4)5|(?<=5)6|(?<=6)7|(?<=7)8|(?<=8)9){3}$";
		Pattern   p   =   Pattern.compile(regEx);
		Matcher   m   =   p.matcher(str);
		if (m.find()){

			return true ;
		}
		return false  ;
	}
	private static boolean isAllDigtial(String str){
		if (str == null || str ==""){
			return true ;
		}

		String regEx="^[0-9]{6,18}$";
		Pattern   p   =   Pattern.compile(regEx);
		Matcher   m   =   p.matcher(str);
		if (m.find()){

			return true ;
		}
		return false  ;
	}
	private static boolean isAllLetter(String str){
		if (str == null || str ==""){
			return true ;
		}

		String regEx="^[a-zA-Z]{6,18}$";
		Pattern   p   =   Pattern.compile(regEx);
		Matcher   m   =   p.matcher(str);
		if (m.find()){

			return true ;
		}
		return false  ;
	}
	private static boolean isFourDigtial(String str){
		if (str == null || str ==""){
			return true ;
		}

		String regEx="^[0-9]{4,4}$";
		Pattern   p   =   Pattern.compile(regEx);
		Matcher   m   =   p.matcher(str);
		if (m.find()){

			return true ;
		}
		return false  ;
	}
	private static boolean isFourLetter(String str){
		if (str == null || str ==""){
			return true ;
		}

		String regEx="^[a-zA-Z]{4,4}$";
		Pattern   p   =   Pattern.compile(regEx);
		Matcher   m   =   p.matcher(str);
		if (m.find()){

			return true ;
		}
		return false  ;
	}
	public static boolean isDGCheckUKEYPinPwd(String str){
		if (str == null || str ==""){
			return true ;
		}
		if(isAllDigtial(str)){
			return true;
		}
		if(isAllLetter(str)){
			return true;
		}
		//System.out.println(str);
		List<String> arr2 =new ArrayList<String>();
		int i=0;
		int len=str.length();
		//System.out.println(len);
		while(i<len-3){
			arr2.add(str.substring(i, i+4));
			//System.err.println(arr2.toString());
			i++;
		}
		int j=0;
		while(j<arr2.size()){
			if(isFourDigtial(arr2.get(j))){
				if((arr2.get(j).charAt(0)==arr2.get(j).charAt(1))&&(arr2.get(j).charAt(1)==arr2.get(j).charAt(2))&&(arr2.get(j).charAt(2)==arr2.get(j).charAt(3))){
					return false;
				}
				if(isFourDigtialAdd(arr2.get(j))){
					return false;
				}
				if(isFourDigtialDec(arr2.get(j))){
					return false;
				}
			}
			if(isFourLetter(arr2.get(j))){
				if((arr2.get(j).charAt(0)==arr2.get(j).charAt(1))&&(arr2.get(j).charAt(1)==arr2.get(j).charAt(2))&&(arr2.get(j).charAt(2)==arr2.get(j).charAt(3))){
					return false;
				}
				char[] arrPwd = new char[arr2.get(j).length()];

				for (int k = 3; k >= 0; k--) {
					arrPwd[k]=arr2.get(j).charAt(k);
				}
				//System.out.println(arrPwd);
				//递增或者递减
	    		if(((arrPwd[3]-arrPwd[2]==1)&&(arrPwd[2]-arrPwd[1]==1)&&(arrPwd[1]-arrPwd[0]==1))||((arrPwd[3]-arrPwd[2]==-1)&&(arrPwd[2]-arrPwd[1]==-1)&&(arrPwd[1]-arrPwd[0]==-1))){
	    			return false;
	    		}
			}
			j++;
		}
		return true;
	}

	public static void main(String[] args) {
		System.err.println(isDGCheckUKEYPinPwd("ABCE1236ABCE"));
		//System.err.println(isFourDigtialAdd("12345"));
		//System.err.println(isFourDigtialDec("5432"));
	}
}

  

时间: 2024-11-07 02:48:21

Android密码约束规则例子一的相关文章

[原] Android 自定义View 密码框 例子

遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 样子 支持的样式 可以通过XML定义影响外边和行为的属性如下 边框圆角值,边框颜色,分割线颜色,边框宽度,密码长度,密码大小,密码颜色 <declare-styleable name="PasswordInputView"> <attr name="border

android导入官方例子

android导入samplefile-->project-->Android-->Android Sample Project android导入官方例子,布布扣,bubuko.com

Android查看网络图片例子

1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:orientation="vertical" android:layout_hei

Android Service demo例子使用详解

Android Service demo例子使用详解\ 概述Service 是 Android 的四大组件之一,它主要的作用是后台执行操作,Activity 属于带有 UI 界面跟用户进行交互,而 Service 则没有 UI 界面,所有的操作都是基于后台运行完成.并且 Service 跟 Activity 一样也是可以由其它的应用程序调用启动的,而且就算用户切换了应用程序,Service 依旧保持运行.一个组件如果与 Service 进行了绑定( bind ),就可以跟 Service 进行数

(转)[原] Android 自定义View 密码框 例子

遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 样子 支持的样式 可以通过XML定义影响外边和行为的属性如下 边框圆角值,边框颜色,分割线颜色,边框宽度,密码长度,密码大小,密码颜色 <declare-styleable name="PasswordInputView"> <attr name="border

Android RecyclerView 使用例子

1.RecyclerView是什么? RecylerView是support-v7包中的新组件,是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,这一点从它的名字recylerview即回收view也可以看出.看到这也许有人会问,不是已经有ListView了吗,为什么还要RecylerView呢?这就牵扯到第二个问题了. 2.RecyclerView的优点是什么? 根据官方的介绍RecylerView是ListView的升级版,既然如此那RecylerView必

Android 自定义字体 例子

1.选择你喜欢的字体,下载字体文件 字体参考:http://www.creativebloq.com/graphic-design-tips/best-free-fonts-for-designers-1233380 2.项目assets文件中新建font文件夹,将你的字体文件放在该文件夹中 3.项目代码 布局代码: [html] view plaincopy <?xml version="1.0" encoding="utf-8"?> <Line

Android Annotations 注解例子

Android 最火的快速开发框架androidannotations配置详解文章中有eclipse配置步骤,Android 最火快速开发框架AndroidAnnotations简介文章中的简单介绍,本篇注重讲解AndroidAnnotations中注解方法的使用. @EActivity 示例: @EActivity(R.layout.main) public class MyActivity extends Activity { } @fragment 示例: @EFragment(R.lay

android笔记--AsyncTask例子

代码: package com.test.handler; import com.test.demo.R; import android.app.Activity; import android.app.ProgressDialog; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget