Javascript regex从地址字符串中提取英国邮政编码的一部分
我真的不太了解regex,所以我无法独自解决这个问题,所以 我正在使用地理定位API,我的目标是大致了解访客的下落,以便我可以列出该特定区域提供的服务 这是通过邮政编码字符串的前导部分完成的。例如Javascript regex从地址字符串中提取英国邮政编码的一部分,javascript,regex,postal-code,Javascript,Regex,Postal Code,我真的不太了解regex,所以我无法独自解决这个问题,所以 我正在使用地理定位API,我的目标是大致了解访客的下落,以便我可以列出该特定区域提供的服务 这是通过邮政编码字符串的前导部分完成的。例如n17 9ht,我的兴趣是n17 这很公平,但我在chrome和IE9中得到了不同的输出,firefox更好,并且自动返回postalCode字符串 chrome:2英国大伦敦卡斯特巴尔公园W5 1BX ie9:3-6 Mt Ave,伦敦伊灵区,伦敦W5,英国 虽然这两个都不是我的地址,但W5是正确
n17 9ht
,我的兴趣是n17
这很公平,但我在chrome和IE9中得到了不同的输出,firefox更好,并且自动返回postalCode字符串
- chrome:
2英国大伦敦卡斯特巴尔公园W5 1BX
- ie9:
3-6 Mt Ave,伦敦伊灵区,伦敦W5,英国
,
拆分,因此我希望从如下字符串中获得W5(或任何可能的英国邮政编码前导部分):
大伦敦W5 1BX
London W5
n1
或ec3a
一样简单-所以我认为,逻辑应该是:
感谢您的帮助。我不熟悉英国邮政编码,但您似乎在说,在删除了地址的其他部分后,您已将地址缩小为:
[Some words] [several-character code] [optional three-character code]
您需要两个字符的代码。如果这是正确的,那么可能是这样的正则表达式:
/\s([^\s]{2,4})(?:\s...)?$/
然后,您需要的位将通过以下方式返回:
(当然,您可以实际测试.match()
的返回,以确保它工作,但如果它工作,您想要的位将是匹配数组的第二个元素。)
狡猾的演示:
编辑:我怀疑这不太管用,因为在某些情况下,城市名称的最后一个字可能会被误认为是邮政编码的第一部分,但如果有关于字母和数字字符在邮政编码中的匹配的固定规则,你可以修复它。(虽然我不知道规则。)我不熟悉英国邮政编码,但您似乎在说,删除了地址的其他部分后,您将地址缩小到:
[Some words] [several-character code] [optional three-character code]
您需要两个字符的代码。如果这是正确的,那么可能是这样的正则表达式:
/\s([^\s]{2,4})(?:\s...)?$/
然后,您需要的位将通过以下方式返回:
(当然,您可以实际测试.match()
的返回,以确保它工作,但如果它工作,您想要的位将是匹配数组的第二个元素。)
狡猾的演示:
编辑:我怀疑这不太管用,因为在某些情况下,城市名称的最后一个字可能会被误认为是邮政编码的第一部分,但如果有关于字母和数字字符在邮政编码中的匹配的固定规则,你可以修复它。(虽然我不知道规则。)这是最长的正则表达式之一,它支持所有英国邮政编码语法(包括部分):
我没有正确测试它,但至少对您的情况有效。这里是最长的正则表达式之一,它支持所有英国邮政编码语法,根据(包括部分):
我没有正确地测试它,但至少对您的案例有效。那很好,我让它与此一起工作。如果它没有捕捉到任何东西,这并不是致命的,人们可以输入-这意味着在输入中预先填充他们的邮政编码。这很好,我用它工作。它不是致命的,如果它没有捕捉到任何东西无论如何,人们可以键入-这意味着在输入中预先填写他们的邮政编码。