前端根据地址截取省市县
这里一共提供两种方法
1.将所有地区关键字写入正则 通过匹配到的次序依次判断
function splitAddress(item) {
let sReg = /市|省|县|区|行政单位|盟|旗|海域|岛|街道办事处|街道|乡|镇/g;
let regRes = item.match(sReg);
console.log(regRes)
var $i = item.indexOf(regRes[0]) + regRes[0].length;
var province = item.substr(0, $i);
var item2 = item.slice($i);
var $i2 = item2.indexOf(regRes[1]) + regRes[1].length;
var city = item2.substr(0, $i2);
var item3 = item2.slice($i2);
var $i3 = item3.indexOf(regRes[2]) + regRes[2].length;
var country = item3.substr(0, $i3);
return { province, city, country };
}
2.完全通过正则匹配
function splitAddress(item) {
let regex = "(?<province>[^省]+自治区|.*?省|.*?行政区|.*?市)(?<city>[^市]+自治州|.*?地区|.*?行政单位|.+盟|市辖区|.*?市|.*?县)(?<county>[^县]+县|.+市|.*?区|.+旗|.+海域|.+岛)?(?<town>[^区]+区|.+镇|.+街道办事处|.+街道|.*?乡)?(?<village>.*)";
var regRes = item.match(regex);
return { province: regRes[1], city: regRes[2], country: regRes[3], town: regRes[4] };
}