方法封装
// /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' }
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。