(1).匹配6位顺增
regex.Pattern = "(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}\d"
(2).匹配6位顺降
regex.Pattern = "(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5}\d"
(3).匹配6位顺增或顺降
regex.Pattern = "(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5})\d"
(4).匹配4-9位连续的数字
(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){3,}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){3,})\d
(5).匹配3位以上的重复数字
([\d])\1{2,}
(6).匹配日期类型的数字
(19|20)[\d]{2}(1[0-2]|0?[1-9])(31|2[0-9]|1[0-9]|0?[0-9])
(7).手机号码类
(13[0-9]|15[0-9]|18[0-9])([\d]{2,4}){2}
(8).匹配33111类型的
([\d])\1{1,}([\d])\2{2,}
(9).匹配5331533类型的
(([\d]){1,}([\d]){1,})\1{1,}
(10).匹配22334,123355类型的
([\d])\1{1,}([\d])\2{1,}
测试代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Regu {
public static void main(String[] args) {
//匹配6位顺增
String pattern = "(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)"
+ "|6(?=7)|7(?=8)|8(?=9)){5}\\d";
Pattern pa = Pattern.compile(pattern);
String mc = "123456";
Matcher ma = pa.matcher(mc);
System.out.println("6位顺增 :" + ma.matches());
System.out.println("*******分割线*******");
//匹配6位顺降
pattern = "(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)"
+ "|2(?=1)|1(?=0)){5}\\d";
pa = Pattern.compile(pattern);
mc = "654321";
ma = pa.matcher(mc);
System.out.println("6位顺降 :" + ma.matches());
System.out.println("*******分割线*******");
//匹配6位顺增或顺降
pattern = "(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)"
+ "|7(?=8)|8(?=9)){5}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3"
+ "(?=2)|2(?=1)|1(?=0)){5})\\d";
pa = Pattern.compile(pattern);
mc = "234567";
ma = pa.matcher(mc);
System.out.println("6位顺增或顺降 :" + ma.matches());
System.out.println("*******分割线*******");
//匹配4-9位连续的数字
pattern = "(?:(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)"
+ "|7(?=8)|8(?=9)){3,}|(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|"
+ "3(?=2)|2(?=1)|1(?=0)){3,})\\d";
pa = Pattern.compile(pattern);
mc = "123456789";
ma = pa.matcher(mc);
System.out.println("4-9位连续的数字 :" + ma.matches());
System.out.println("*******分割线*******");
//匹配3位以上的重复数字
pattern = "([\\d])\\1{2,}";
pa = Pattern.compile(pattern);
mc = "888888";
ma = pa.matcher(mc);
System.out.println("3位以上的重复数字 :" + ma.matches());
System.out.println("*******分割线*******");
//匹配手机号码类
pattern = "(13[0-9]|15[0-9]|18[0-9])([\\d]{2,4}){2}";
pa = Pattern.compile(pattern);
mc = "18930333033";
ma = pa.matcher(mc);
System.out.println("手机号码 :" + ma.matches());
System.out.println("*******分割线*******");
// //匹配连同号如“112233”“222333”
// pattern = "([\\d])\1{1,}([\\d])\\2{2,}"; //这个测试没有通过,要重新编写
// pa = Pattern.compile(pattern);
// mc = "33111";
// ma = pa.matcher(mc);
// System.out.println("连同号如112233 , 222333 :" + ma.matches());
System.out.println("*******分割线*******");
//匹配2233类型
pattern = "([\\d])\\1{1,}([\\d])\\2{1,}";
pa = Pattern.compile(pattern);
mc = "2233";
ma = pa.matcher(mc);
System.out.println("2233类型 :" + ma.matches());
System.out.println("*******分割线*******");
}
}