^.+(區|鎮).+(路|街).+號.+號樓.+單元.+(室|戶).*$
^.+(路|街).+號.+號樓.+單元.+(室|戶).*$
^.+縣.+(路|街).+號.+號樓.+單元.+(室|戶).*$
^.+縣.+(鎮|鄉).+(路|街).+號.+號樓.+單元.+(室|戶).*$
^.+(區|鎮).+小區.+號樓.+單元.+(室|戶).*$
^.+小區.+號樓.+單元.+(室|戶).*$
^.+縣.+小區.+號樓.+單元.+(室|戶).*$
^.+縣.+(鎮|鄉).+小區.+號樓.+單元.+(室|戶).*$
^.+(路|街|里).+號.+(室|戶).*$
^.+(鎮|鄉).+村.+(組|屯).+號.*$
^.+(鎮|鄉|街).+(村|屯).+(組|號).*$
用符號 “|” 來連接上面的地址

@Test public void method(){ List<String> list = new ArrayList<>(); // String regexpLike = "^.+(區|鎮).+(路|街).+號.+號樓.+單元.+(室|戶).*$" ; // String regexpLike = "^.+(路|街).+號.+號樓.+單元.+(室|戶).*$" ; // String regexpLike = "^.+縣.+(路|街).+號.+號樓.+單元.+(室|戶).*$" ; // String regexpLike = "^.+縣.+(鎮|鄉).+(路|街).+號.+號樓.+單元.+(室|戶).*$" ; // String regexpLike = "^.+(區|鎮).+小區.+號樓.+單元.+(室|戶).*$" ; // String regexpLike = "^.+小區.+號樓.+單元.+(室|戶).*$" ; // String regexpLike = "^.+縣.+小區.+號樓.+單元.+(室|戶).*$" ; // String regexpLike = "^.+縣.+(鎮|鄉).+小區.+號樓.+單元.+(室|戶).*$" ; String regexpLike = "^.+(路|街|里).+號.+(室|戶).*$" ; // String regexpLike = "^.+(鎮|鄉).+村.+(組|屯).+號.*$" ; // String regexpLike = "^.+(鎮|鄉|街).+(村|屯).+(組|號).*$" ; list.add(regexpLike); String address = "A區A路A號樓A單元A室"; System.out.println(checkAddress(list,address)); } private boolean checkAddress(List<String > rules, String address) { boolean regexMatch = false; for (String addressRule : rules) { Pattern p = Pattern.compile(addressRule); Matcher m = p.matcher(address); if (m.find()) { regexMatch = true; return regexMatch; } } return regexMatch; }