1. 程式人生 > >正則表示式 判斷 連號如“123456”、同號如“888888”、連同號如“112233”“222333”

正則表示式 判斷 連號如“123456”、同號如“888888”、連同號如“112233”“222333”

  1. import java.util.regex.Matcher;    
  2. import java.util.regex.Pattern;    
  3.     
  4. public class Regu {    
  5.     
  6.     public static void main(String[] args) {    
  7.         //匹配6位順增    
  8.         String pattern = "(?:0(?=1)|1(?=2)|2(?=3)|3(?=4)|4(?=5)|5(?=6)|6(?=7)|7(?=8)|8(?=9)){5}\\d";    
  9.         Pattern pa = Pattern.compile(pattern);    
  10.         String mc = "123456";    
  11.         Matcher ma = pa.matcher(mc);    
  12.         System.out.println("6位順增 :" + ma.matches());    
  13.         System.out.println("*******分割線*******");    
  14.             
  15.         //匹配6位順降    
  16.         pattern = "(?:9(?=8)|8(?=7)|7(?=6)|6(?=5)|5(?=4)|4(?=3)|3(?=2)|2(?=1)|1(?=0)){5}\\d";    
  17.         pa = Pattern.compile(pattern);    
  18.         mc = "654321";    
  19.         ma = pa.matcher(mc);    
  20.         System.out.println("6位順降 :" + ma.matches());    
  21.         System.out.println("*******分割線*******");    
  22.             
  23.         //匹配6位順增或順降    
  24.         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";    
  25.         pa = Pattern.compile(pattern);    
  26.         mc = "234567";    
  27.         ma = pa.matcher(mc);    
  28.         System.out.println("6位順增或順降 :" + ma.matches());    
  29.         System.out.println("*******分割線*******");    
  30.             
  31.         //匹配4-9位連續的數字    
  32.         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";    
  33.         pa = Pattern.compile(pattern);    
  34.         mc = "123456789";    
  35.         ma = pa.matcher(mc);    
  36.         System.out.println("4-9位連續的數字 :" + ma.matches());    
  37.         System.out.println("*******分割線*******");    
  38.             
  39.         //匹配3位以上的重複數字    
  40.         pattern = "([\\d])\\1{2,}";    
  41.         pa = Pattern.compile(pattern);    
  42.         mc = "888888";    
  43.         ma = pa.matcher(mc);    
  44.         System.out.println("3位以上的重複數字 :" + ma.matches());    
  45.         System.out.println("*******分割線*******");    
  46.             
  47.         //匹配手機號碼類    
  48.         pattern = "(13[0-9]|15[0-9]|18[0-9])([\\d]{2,4}){2}";    
  49.         pa = Pattern.compile(pattern);    
  50.         mc = "18930333033";    
  51.         ma = pa.matcher(mc);    
  52.         System.out.println("手機號碼 :" + ma.matches());    
  53.         System.out.println("*******分割線*******");    
  54.         
  55. //      //匹配連同號如“112233”“222333”    
  56. //      pattern = "([\\d])\1{1,}([\\d])\\2{2,}"; //這個測試沒有通過,要重新編寫    
  57. //      pa = Pattern.compile(pattern);    
  58. //      mc = "33111";    
  59. //      ma = pa.matcher(mc);    
  60. //      System.out.println("連同號如112233 , 222333 :" + ma.matches());    
  61.         System.out.println("*******分割線*******");    
  62.             
  63.         //匹配2233型別    
  64.         pattern = "([\\d])\\1{1,}([\\d])\\2{1,}";    
  65.         pa = Pattern.compile(pattern);    
  66.         mc = "2233";    
  67.         ma = pa.matcher(mc);    
  68.         System.out.println("2233型別 :" + ma.matches());    
  69.         System.out.println("*******分割線*******");    
  70.             
  71.     }    
  72. }