// /utils/regex.js
const reg_address = "(?<province>[^ 省]+ 自治区 |.*? 省 |.*? 行政区 |.*? 市 )(?<city>[^ 市]+ 自治州 |.*? 地区 |.*? 行政单位 |.+ 盟 | 市辖区 |.*? 市 |.*? 县 )(?<county>[^ 县]+ 县 |.+?(区 {1})|.+ 市 |.+ 旗 |.+ 海域 |.+ 岛 )?(?<village>.*)";
// utils/index.js
const Regex = require('../utils/regex')
/**
* 辨认地址 省市区其余
* @param {string} str 收货地址
* @returns {province: '重庆', city: '重庆市', county: '梁平区', village: '和林镇 xxx'}
*/
exports.formattAddress = (str) => {if (!str) return
// 中国 4 个直辖市
const municipality = ['重庆', '北京', '上海', '天津']
const subStr = str.substring(0, 2)
const isExist = municipality.includes(subStr)
if (isExist) {str = str.substring(2, str.length - 1)
str = `${subStr} 省 ${str}`
}
let addr = str.match(Regex.reg_address)
if (!addr) return
const groups = Object.assign({}, addr.groups)
// 如果是直辖市,截取地址后,把省字替换成市
if (isExist) {groups.province = groups.province.replace('省', '')
}
return groups
}
const utils = require('../utils')【留神,重庆 / 北京 / 上海 / 天津,4 个为直辖市,不须要加省市】const address = utils.formattAddress('重庆重庆市梁平区和林镇三 xxx')
console.log(address) // {province: '重庆', city: '重庆市', county: '梁平区', village: '和林镇三 xxx'}【留神,有 2 个区,只有一个区就行】const address = utils.formattAddress('广西壮族自治区南宁市良庆区金象三区五象路 xxx')
console.log(address) // {province: '广西壮族自治区', city: '南宁市', county: '良庆区', village: '金象三区五象路 xxx'}