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"));
}
}

  

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

  1. [Android Pro] 完美Android Cursor使用例子(Android数据库操作)

    reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...

  2. Android MediaCodec 使用例子

    Android MediaCodec 使用例子 下面的例子是使用MediaCodec 录制到文件的例子. 1 public class AvcEncoder { private MediaCodec ...

  3. 我的Android进阶之旅------>Android拍照小例子

    今天简单的学习了一下android拍照的简单实现. 当然该程序是个小例子,非常简单,没有什么复杂的操作,但是可以学习到Android 拍照API流程. 1.在布局文件中添加一个 surfaceView ...

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

    遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...

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

    遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...

  6. android highcharts 柱状图例子

    android提供achartengine api 只能做简单的,如果是复杂的图表,个人的想法结合highcharts来完成:减小工作量,官方提供的例子也非常丰富. 通过android webview ...

  7. 编译android framework的例子【转】

    本文转载自:http://blog.csdn.net/brucexu1978/article/details/7610358 在开发过程中,尤其是Framework相关开发时,有时候需要重新编译资源文 ...

  8. Android test---robotium----简单例子

    1.首先新建一个要被测试的工程,命名为”robotium“:一个很简单的Android 应用程序:主页面只有个 TextView 控件: 2. 在建一个用于测试的工程 ,命名为”robotiumTes ...

  9. android 密码输入通过复选框实现明文密文显示

    editText1.setTransformationMethod(HideReturnsTransformationMethod.getInstance());//将文本框的内容以明文显示 edit ...

随机推荐

  1. linux查看系统类型和版本

    首先大致普及下linux系统的版本内容. 1.内核版本和发行版本区别 我的理解,内核版本就是指linux中最基层的代码,版本号如 Linux version 3.10.0-327.22.2.el7.x ...

  2. java io流之字符流

    字符流 在程序中一个字符等于两个字节,那么java提供了Reader.Writer两个专门操作字符流的类. 字符输出流:Writer Writer本身是一个字符流的输出类,此类的定义如下: publi ...

  3. JS valueOf与字符串

    js在处理字符串和数值加运算的时候会转换数值为字符串 然后执行字符串连接 在覆盖String.prototype.valueOf之前,new String(111)这样的字符串与数值加法也是字符串连接 ...

  4. H5表单中placeholder属性的字体颜色问题

    最近做项目的时候遇到的一些小样式问题,有关表单.并且在接下来几天的面试人中五个人都没有回答上来,改变placeholder属性的默认字体颜色,感觉有必要总结一下. 如何改变默认字体的颜色? @blue ...

  5. 需要一个策略文件,但在加载此媒体时未设置checkPolicyFile标志

    LoaderContext的checkPolicyFile属性: 如果您从执行调用的 SWF 文件所在的域之外加载图像(JPEG.GIF 或 PNG),并且您预计将需要从 ActionScript 访 ...

  6. 关于rem的计算顺序

    /*响应式字体*//* * 字体响应式 * 屏幕>640px时,html字体大小 * 屏幕<640px时,html字体根据屏幕做出相应  * */(function(doc,win){   ...

  7. Linux下SVN客户端安装及使用

    转载自:http://www.linuxidc.com/Linux/2015-01/111748.htm 不想自己写了,这个写的挺全的,我就按这个步骤走的,呵呵 非常感谢作者 环境说明: 系统版本:C ...

  8. CentOS 6 安装 MySQL-python

    yum install -y mysql-devel python-devel python-setuptools pip install MySQL-python

  9. DailyRollingFileAppender的使用

    DailyRollingFileAppender是日志记录软件包Log4J中的一个Appender,它能够按一定的频度滚动日志记录文件. 如果您不熟悉Log4J,建议阅读一下 使用Log4j进行日志记 ...

  10. 实用的PHP功能详解(一)_php glob()用法

    一.使用glob()查找文件 大部分PHP函数的函数名从字面上都可以理解其用途,但是当你看到 glob() 的时候,你也许并不知道这是用来做什么的,其实glob()和scandir() 一样,可以用来 ...