首页 > 解决方案 > 如何使用正则表达式从地址字符串中删除建筑物编号和入口?

问题描述

我有各种地址字符串,我想从建筑物编号部分自动清除,只留下街道地址。

例子:

"15A W 131st St, New York, NY 10037, USA"
"W 131st St, New York, NY 10037, USA"

"125 E 145th St, New York, NY 10037, USA"
"E 145th St, New York, NY 10037, USA"

"3 Rue Auguste Bartholdi, 75015 Paris, France"
"Rue Auguste Bartholdi, 75015 Paris, France"

我尝试过使用String.prototype.match()以下正则表达式:/[^0-9\s].+/它可以很好地删除数字,但如果建筑物有字母入口(35A、20B 等)则不起作用。使用字母字符让我对字符串的其余部分产生了问题。

标签: javascriptregex

解决方案


我的主要问题是我试图匹配字符串的其余部分并保留它,String.match()而不是定位字符串的开头并用String.replace().

String.replace()使用这种态度时解决的一些正则表达式:

address.replace(/^\d+[A-z]?\s/, '')
address.replace(/^[^\s]+\s/, '')

String.split()另一种解决方案是使用该方法来定位空白。这意味着转换为单词数组,删除第一个单词,并将数组加入一个新的干净字符串。

代码:

let newAddress = fullAddress.split(" ").slice(1).join(" ");

推荐阅读