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. spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 动态组合条件查询

    实际应用中,系统设计无法预料到用户最终的查询条件是怎样的.通常的做法是给出一些限制死的查询条件让用户查询.业务稍有改动,就要重新设计界面,增加查询字段等,费时费力. 比较好的做法是,除了常用的查询外, ...

  2. SQL 分页

    sql = "SELECT TOP 10000 * " + " FROM(SELECT ROW_NUMBER() OVER(ORDER BY DataArticleID) ...

  3. 常用的PHP框架

    ThinkPHP  http://www.thinkphp.cn Yii            http://www.yiichina.com laravel      https://laravel ...

  4. [题解]UVa 11082 Matrix Decompressing

    开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...

  5. Time Series data 与 sequential data 的区别

    It is important to note the distinction between time series and sequential data. In both cases, the ...

  6. 部分MP4在谷歌浏览器上无法播放

    Chrome浏览器支持HTML5,它支持原生播放部分的MP4格式(不用通过Flash等插件). 为什么是部分MP4呢?MP4有非常复杂的含义(见http://en.wikipedia.org/wiki ...

  7. Java-计划存储

    Hive:Hive文档 Hdfs官方 Spark官方 About云中文论坛 书单:2015豆瓣书单 豆瓣千人8.0+书单 编程入口:Eclipse servlet java8 快捷键整理  MyBat ...

  8. vs2010 A selected drive is no longer valid

    visual studio 2010重新安装添加组件,报A selected drive is no longer valid错误. 这个是由于已经安装了sp1,此时需要将sp1卸载掉,然后就可以安装 ...

  9. java 学习写架构必会几大技术点

    java 学习写架构必会几大技术点 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation ...

  10. java javacv调用摄像头并拍照

    调用摄像头并拍张照片,我一开始用的java的jmf媒体框架,但这个有很多的局限性不好使并且很有麻烦,兜了一圈发现javacv东西,研究之后这东西简单,方便:废话不多说了来重点. javacv官网:点击 ...