我不知道如何在街道名称后分割地址的地址。
假定地址是以下之一:
str='street name, 12B, 1234, The Hague, the Netherlands'
str2='street name 12B 1234AB The Hague, the Netherlands'
str3='street name 12B 1234AB, $ ^ The Hague, the Netherlands'
我想按以下方式分割这些地址:
1)逗号,或一般情况下最好使用非alpha /标点符号(例如; ^ @)。这些分隔符应删除;
2)数字后可以跟字母而不删除。
预期结果:
['street name', '12B', '1234', 'The Hague', 'the Netherlands']
我正在尝试对str.split(/(\ d + [a-zA-Z] *)/ g)进行变体,该变体仍然保留诸如“,”(为什么?)之类的元素。
我也尝试了OR运算符|在分隔符1和2之间,但没有成功。
这一点越来越近:
str.split(/(\d+[a-zA-Z]*[,])/g).map(x=>x.trim().replace(/[,.;]/g,''))
[ "street name, ", "12B,", " ", "1234,", " The Hague, the Netherlands" ]
答案 0 :(得分:2)
您也可以查看split
而不是match
。使用此正则表达式,您可以从match
获得以下内容:
/\d\w*|\w+( +[a-z]\w*)*/gi
function parts(str) {
return str.match(/\d\w*|\w+( +[a-z]\w*)*/gi);
}
const tests = [
'street name, 12B, 1234, The Hague, the Netherlands',
'street name 12B 1234AB The Hague, the Netherlands',
'street name 12B 1234AB, $ ^ The Hague, the Netherlands'
];
for (const str of tests) console.log(parts(str));