当前位置: 首页 > news >正文

js截取地址详细信息(除去省市区、市市区、自治区市区)

  • 解析地址字符串,严格匹配【省市区】、【市市区】、【自治区市区】格式
  • 格式要求:
    1. 省市区:XX省XX市XX区/县
    1. 市市区:XX市XX市XX区/县 (仅限直辖市)
    1. 自治区市区:XX自治区XX市XX区/县
  • 符合上述格式则返回剩余部分(乡镇/街道及以下),否则返回原地址
function parseAddress(address) {// 直辖市列表const municipalities = ['北京市', '天津市', '上海市', '重庆市'];// 严格匹配三种标准格式const strictRegex = /^((?<province>[^]+)(?<city>[^]+)(?<county>[^市县区旗]+(?:||))|  // 省市区格式(?<municipality>北京市|天津市|上海市|重庆市)(?<district>[^]+)(?<county2>[^市县区旗]+(?:||))|  // 市市区格式(仅限直辖市)(?<province2>.+自治区)(?<city2>[^]+)(?<county3>[^市县区旗]+(?:||)) // 自治区市区格式)(?<rest>.*)$/;// 检查地址中是否包含多个"省"或"自治区",如果是则直接返回原地址const provinceCount = (address.match(//g) || []).length;const autonomousRegionCount = (address.match(/自治区/g) || []).length;if (provinceCount > 1 || autonomousRegionCount > 1 || (provinceCount > 0 && autonomousRegionCount > 0)) {return address;}// 去除分隔符并合并连续空格const normalizedAddr = address.replace(/[^\u4e00-\u9fa50-9a-zA-Z]/g, '');const match = strictRegex.exec(normalizedAddr);if (match?.groups) {// 检查匹配的是哪种格式const isProvinceFormat = match.groups.province && match.groups.city && match.groups.county;const isMunicipalityFormat = match.groups.municipality && match.groups.district && match.groups.county2;const isAutonomousFormat = match.groups.province2 && match.groups.city2 && match.groups.county3;// 仅当完全匹配标准格式时才处理if (isProvinceFormat || isMunicipalityFormat || isAutonomousFormat) {// 对于市市区格式,确保第一个市是直辖市if (isMunicipalityFormat && !municipalities.includes(match.groups.municipality)) {return address;}return match.groups.rest || '';}}return address;
}

相关文章:

  • 如何搭建一个自己上传视频的网站百度指数分析工具
  • vb语言做的网站苏州百度推广开户
  • 计算机网络搭建宁波seo推荐推广平台
  • 网站站点怎么做web前端培训费用大概多少
  • 上海内贸网站建设百度指数搜索榜
  • 网站开发浏览器兼容深圳seo专家
  • Proteus仿真51单片机控制L298N PWM电机调速
  • 深入GPU编程:从硬件架构到内核优化
  • Gated CNN Block,抑制背景噪声、强化边缘特征,更好地融合不同尺度的特征信息
  • python的智慧养老院管理系统
  • 深入解析RS485通信:从原理到Linux驱动开发实践
  • 图像处理解决方案
  • Promptify与ReActAgent
  • Docker、Docker composer与Docker desktop
  • 【Elasticsearch】es初识,在项目架构中的用途,与mysql和kafka的配合使用,
  • .NET 7.0 EF Core:一、创建Web API 项目基础框架和用户表的增删改查
  • C++ 第二阶段项目三:图形绘制库
  • PDF24 Creator(PDF工具箱)
  • 中文PDF解析准确率排名
  • 设计模式:揭秘Java原型模式——让复杂对象的创建不再复杂
  • 使用pyflink编写demo并将任务提交到yarn集群
  • 【启发式算法】RRT*算法详细介绍(Python)
  • 一篇文章了解XML
  • LeetCode 3298.统计重新排列后包含另一个字符串的子字符串数目2
  • aspose.word在IIS后端DLL中高并发运行,线程安全隔离
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | BackgroundSlider(背景滑块)