科目三: 济南章丘三号线

科目三: 济南章丘三号线

在这里插入图片描述

[ { "county": "历城区", "town": "临港街道", "type": "风险较高" }, { "county": "历城区", "town": "唐王镇", "type": "风险较高" }, { "county": "历城区", "town": "荷花路街道", "type": "风险较高" }, { "county": "历城区", "town": "董家镇", "type": "风险较高" }, { "county": "历城区", "town": "遥墙街道", "type": "风险较高" }, { "county": "历城区", "town": "鲍山街道", "type": "风险较高" }, { "county": "商河县", "town": "孙集乡", "type": "风险较高" }, { "county": "商河县", "town": "张坊乡", "type": "风险较高" }, { "county": "商河县", "town": "怀仁镇", "type": "风险较高" }, { "county": "商河县", "town": "殷巷镇", "type": "风险较高" }, { "county": "商河县", "town": "沙河乡", "type": "风险较高" }, { "county": "商河县", "town": "玉皇庙镇", "type": "风险较高" }, { "county": "商河县", "town": "白桥镇", "type": "风险较高" }, { "county": "商河县", "town": "许商街道", "type": "风险较高" }, { "county": "商河县", "town": "贾庄镇", "type": "风险较高" }, { "county": "商河县", "town": "郑路镇", "type": "风险较高" }, { "county": "商河县", "town": "韩庙乡", "type": "风险较高" }, { "county": "商河县", "town": "龙桑寺镇", "type": "风险较高" }, { "county": "天桥区", "town": "大桥镇", "type": "风险较高" }, { "county": "天桥区", "town": "桑梓店镇", "type": "风险较高" }, { "county": "济阳县", "town": "仁风镇", "type": "风险较高" }, { "county": "济阳县", "town": "回河镇", "type": "风险较高" }, { "county": "济阳县", "town": "垛石镇", "type": "风险较高" }, { "county": "济阳县", "town": "太平镇", "type": "风险较高" }, { "county": "济阳县", "town": "孙耿镇", "type": "风险较高" }, { "county": "济阳县", "town": "崔寨镇", "type": "风险较高" }, { "county": "济阳县", "town": "新市镇", "type": "风险较高" }, { "county": "济阳县", "town": "曲堤镇", "type": "风险较高" }, { "county": "济阳县", "town": "济北街道", "type": "风险较高" }, { "county": "济阳县", "town": "济阳街道", "type": "风险较高" }, { "county": "章丘市", "town": "刁镇", "type": "风险较高" }, { "county": "章丘市", "town": "宁家埠镇", "type": "风险较高" }, { "county": "章丘市", "town": "枣园街道", "type": "风险较高" }, { "county": "章丘市", "town": "水寨镇", "type": "风险较高" }, { "county": "章丘市", "town": "白云湖镇", "type": "风险较高" }, { "county": "章丘市", "town": "相公庄镇", "type": "风险较高" }, { "county": "章丘市", "town": "绣惠镇", "type": "风险较高" }, { "county": "章丘市", "town": "辛寨镇", "type": "风险较高" }, { "county": "章丘市", "town": "高官寨镇", "type": "风险较高" }, { "county": "章丘市", "town": "黄河镇", "type": "风险较高" }, { "county": "章丘市", "town": "龙山街道", "type": "风险较高" } ]我有这样一个数据用上面的正则匹配county字段,为什么济阳县匹配完就没了
06-12
### 问题分析 当使用正则表达式去除字符串末尾的“县”、“区”或“市”时,如果字符串为“济阳县”,可能会被完全匹配掉。这是因为正则表达式的模式设计存在问题,导致它不仅匹配了末尾的“县”,还错误地匹配了整个字符串。 #### 正则表达式解析 在之前的正则表达式中,`/(县|区|市)$/g`[^1] 被用来匹配字符串末尾的“县”、“区”或“市”。然而,这种模式存在潜在问题: - `县|区|市`:这是一个分组,表示匹配“县”、“区”或“市”中的任意一个。 - `$`:锚定符,表示匹配必须发生在字符串的末尾。 对于字符串“济阳县”,该正则表达式会正确匹配末尾的“县”。但如果字符串本身仅包含“县”(例如“济阳县”),那么整个字符串会被视为匹配项并被替换掉。 #### 具体原因 在正则表达式中,`$` 确保了匹配发生在字符串的末尾,但并未限制匹配的长度。因此,如果字符串以“县”结尾,并且没有其他字符跟随,“县”会被完整匹配并替换掉。这导致“济阳县”被替换为空字符串。 ### 解决方案 为了避免这种情况,可以修改正则表达式以确保只匹配末尾的“县”、“区”或“市”,而不会影响前面的内容。以下是改进后的正则表达式: ```javascript let str = "济阳县"; str = str.replace(/(县|区|市)$/, ""); // 去掉全局标志 g console.log(str); // 输出:济南 ``` #### 改进点 - **移除全局标志**:将 `/g` 标志移除,因为在这种场景下,只需要替换最后一个匹配项,而不是所有匹配项。 - **保持逻辑不变**:仍然使用 `(县|区|市)$` 来匹配末尾的“县”、“区”或“市”。 通过上述调整,“济阳县”只会被替换为“济南”,而不会被完全移除。 ### 进一步优化 如果需要处理更复杂的情况(例如多个连续的“县”、“区”或“市”),可以使用以下正则表达式: ```javascript let str = "济阳县区市"; str = str.replace(/(县|区|市)+$/, ""); // 匹配一个或多个连续的“县”、“区”或“市” console.log(str); // 输出:济南 ``` #### 优化点 - 使用 `+` 修饰符:允许匹配一个或多个连续的“县”、“区”或“市”,从而处理类似“济阳县区市”的情况。 ### 示例代码 以下是一个完整的示例代码,展示如何正确去除字符串末尾的“县”、“区”或“市”: ```javascript function removeSuffix(str) { return str.replace(/(县|区|市)+$/, ""); // 匹配末尾的一个或多个“县”、“区”或“市” } console.log(removeSuffix("济阳县")); // 输出:济南 console.log(removeSuffix("北京市区")); // 输出:北京 console.log(removeSuffix("广州市区县")); // 输出:广州 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值