1

我需要使用正则表达式从 javascript 中的地址中提取邮政编码。

我目前通过的地址是:

Vittal Mallya Road, KG Halli, Sampangi Rama Nagar, 班加罗尔, 卡纳塔克邦 560001, 印度

我为获取邮政编码而形成的正则表达式是:

var Zip=results[0].formatted_address; Zip = Zip.replace(/^\D+/g, '');

我得到的输出是 560001,印度,而不仅仅是 560001。此外,我想忽略地址开头的任何数字,例如门号/房屋/街道号码,因为我只关心邮政编码。此外,如果我们传递包含相应邮政编码的英国/美国地址,它也应该有效。对此问题的任何帮助将不胜感激。

4

2 回答 2

3

看看你的正则表达式:regexr.com

^\D+

它从行首(^)匹配任何非数字 (\D)字符,
这意味着它将从行首开始并以第一个数字结束,在您的情况下它将匹配:

Vittal Mallya Road, KG Halli, Sampangi Rama Nagar, Bangalore, Karnataka 

然后你删除这个匹配,留下560001, India


你想要\d{6}- 匹配任何数字 6 次,或 6 个数字。

然后您可以使用Pattern 和 Matcher提取值

于 2013-06-25T10:31:48.963 回答
1

我认为匹配邮政编码更有意义,而不是匹配非数字项目并删除它们。此模式将匹配地址字符串中的美国邮政编码和加拿大邮政编码

(\d{5}([ -]\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[AZ]{1}[ -]\d{1}[AZ] {1}\d{1}$)

https://regexr.com/455ns

于 2018-12-18T18:18:54.507 回答