From b4a4e87f9fb74cd3e09e79383b8ad255f389aaee Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Fri, 22 Sep 2023 11:16:04 +0800
Subject: [PATCH] 再次增强智能地址识别的能力

---
 forms/chinaArea/SmartAddress.js |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/forms/chinaArea/SmartAddress.js b/forms/chinaArea/SmartAddress.js
index 4c6ce09..1b41fcb 100644
--- a/forms/chinaArea/SmartAddress.js
+++ b/forms/chinaArea/SmartAddress.js
@@ -158,7 +158,7 @@
                     }
                 }
             }
-        })
+        });
     }
 
     _isAddress(tree, content) {
@@ -175,7 +175,8 @@
     _parseAddress(chinaTree, content) {
         content = content.replace('中国', '');
         // 省份处理 ---
-        const provinceTailReg = /特别行政区|自治区|省|市$/;
+        const provinceTail = '特别行政区|壮族自治区|回族自治区|维吾尔自治区|自治区|省|市';
+        const provinceTailReg = new RegExp(provinceTail + '$');
         for (let province of chinaTree) {
             const provinceStr = province.label.replace(provinceTailReg, '');
             // 省份匹配
@@ -184,10 +185,11 @@
                 this.wordData.province = province.label;
                 this.wordData.provinceCode = province.value;
                 // 移除省份
-                const provinceNameReg = new RegExp('^' + provinceStr + '(特别行政区|自治区|省|市)?');
+                const provinceNameReg = new RegExp('^' + provinceStr + '(' + provinceTail + ')?');
                 content = content.replace(provinceNameReg, '');
                 // 市级处理 ---
-                const cityTailReg = /市|区|县|自治县|自治州|地区$/;
+                const cityTail = '市|区|县|自治县|自治州|地区';
+                const cityTailReg = new RegExp(cityTail + '$');
                 for (let city of province.children) {
                     const cityStr = city.label.replace(cityTailReg, '');
                     // 市级匹配
@@ -196,10 +198,11 @@
                         this.wordData.city = city.label;
                         this.wordData.cityCode = city.value;
                         // 移除市级
-                        const cityNameReg = new RegExp('^' + cityStr + '(市|区|县|自治县|自治州|地区)?');
+                        const cityNameReg = new RegExp('^' + cityStr + '(' + cityTail + ')?');
                         content = content.replace(cityNameReg, '');
                         // 区级处理 ---
-                        const distTailReg = /市|区|县|镇|乡|自治县|开发区|新区|矿区|旗|自治旗$/;
+                        const distTail = '市|区|县|镇|乡|自治县|开发区|新区|矿区|旗|自治旗';
+                        const distTailReg = new RegExp(distTail + '$');
                         for (let dist of city.children) {
                             const distStr = dist.label.replace(distTailReg, '');
                             // 区级匹配
@@ -208,7 +211,7 @@
                                 this.wordData.dist = dist.label;
                                 this.wordData.distCode = dist.value;
                                 // 移除区级
-                                const distNameReg = new RegExp('^' + distStr + '(市|区|县|镇|乡|自治县|开发区|新区|矿区|旗|自治旗)?');
+                                const distNameReg = new RegExp('^' + distStr + '(' + distTail + ')?');
                                 content = content.replace(distNameReg, '');
                             }
                         }

--
Gitblit v1.9.1