String s= "安徽省合肥市肥西縣上派鎮"; // String regex="(\\?[^省]+自治區|.*?省|.*?行政區|.*?市)(\\?[^市]+自治州|.*?地區|.*?行政單位|.+盟|市轄區|.*?市|.*?縣)(\\?[^縣]+縣|.+?區|.+市|.+旗|.+海域|.+島)?(\\?[^區]+區|.+鎮)?(\\?.*)"; String regex="((?<province>[^省]+省|.+自治區)|上海|北京|天津|重慶)(?<city>[^市]+市|.+自治州)(?<county>[^縣]+縣|.+區|.+旗|.+海域|.+島)?(?<town>[^鄉].+鎮.+鄉)?(?<village>.*)"; Matcher m=Pattern.compile(regex).matcher(s); // Matcher m = r.matcher(s); while (m.find()) { System.out.println("Found value: " + m.group(0) ); System.out.println("Found value: " + m.group(1) ); System.out.println("Found value: " + m.group(2) ); System.out.println("Found value: " + m.group(3) ); System.out.println("1111111111111111111111111111111111111"); System.out.println("Found value: " + m.group("province") ); System.out.println("Found value: " + m.group("city") ); System.out.println("Found value: " + m.group("county") ); System.out.println("Found value: " + m.group("town") ); System.out.println("Found value: " + m.group("village") ); } System.out.println("NO MATCH");
vue
//select
<el-form-item label="省市區" prop="shszssq">
<v-distpicker v-model="form.shszssq"
:province="select.province"
:city="select.city"
:area="select.area"
@selected="selected"
></v-distpicker>
</el-form-item>
//省市區截取 selected(data){ this.form.shszssq = data.province.value+data.city.value+data.area.value; },
//省市區截取 getArea(str) { var str = str; var reg = /.+?(省|市|自治區|自治州|行政區|盟|旗|縣|區)/g // 省市區的正則 const area = str.match(reg) // 分割省市區 // console.log(area) // ['內蒙古自治區', '錫林郭勒盟', '正鑲白旗'] /*var len = 0 for (var i = 0; i < area.length; i++) { // 獲取省市區的長度 len += area[i].length } area.push(str.substring(len)) // 獲取省市區之后的字符串 console.log(area) // ['內蒙古自治區', '錫林郭勒盟', '正鑲白旗', '前進大街2699號'] for (var j = 0; j < area.length; j++) { console.log(area[j]) }*/ return area; },
var area =this.getArea(this.form.shszssq);
this.select ={ province: area[0], city: area[1], area: area[2] }