Javascript regex从地址字符串中提取英国邮政编码的一部分

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是正确

我真的不太了解regex,所以我无法独自解决这个问题,所以

我正在使用地理定位API,我的目标是大致了解访客的下落,以便我可以列出该特定区域提供的服务

这是通过邮政编码字符串的前导部分完成的。例如
n17 9ht
,我的兴趣是
n17

这很公平,但我在chrome和IE9中得到了不同的输出,firefox更好,并且自动返回postalCode字符串

  • chrome:
    2英国大伦敦卡斯特巴尔公园W5 1BX
  • ie9:
    3-6 Mt Ave,伦敦伊灵区,伦敦W5,英国
虽然这两个都不是我的地址,但W5是正确的

问题是,如何从给定的两个可能字符串中提取W5

显然,字符串被
拆分,因此我希望从如下字符串中获得W5(或任何可能的英国邮政编码前导部分):

  • 大伦敦W5 1BX
  • London W5
在邮政编码的两部分之间总是有一个空格(如果提供了2-nd)

我不关心BFPO/GIR案例,所以它几乎只是第1部分,它可以像
n1
ec3a
一样简单-所以我认为,逻辑应该是:

  • 提取完整或部分邮政编码
  • 参加第1部分(或唯一部分)并将其传递下去

  • 感谢您的帮助。

    我不熟悉英国邮政编码,但您似乎在说,在删除了地址的其他部分后,您已将地址缩小为:

    [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()
    的返回,以确保它工作,但如果它工作,您想要的位将是匹配数组的第二个元素。)

    狡猾的演示:


    编辑:我怀疑这不太管用,因为在某些情况下,城市名称的最后一个字可能会被误认为是邮政编码的第一部分,但如果有关于字母和数字字符在邮政编码中的匹配的固定规则,你可以修复它。(虽然我不知道规则。)

    这是最长的正则表达式之一,它支持所有英国邮政编码语法(包括部分):


    我没有正确测试它,但至少对您的情况有效。

    这里是最长的正则表达式之一,它支持所有英国邮政编码语法,根据(包括部分):


    我没有正确地测试它,但至少对您的案例有效。

    那很好,我让它与此一起工作。如果它没有捕捉到任何东西,这并不是致命的,人们可以输入-这意味着在输入中预先填充他们的邮政编码。这很好,我用它工作。它不是致命的,如果它没有捕捉到任何东西无论如何,人们可以键入-这意味着在输入中预先填写他们的邮政编码。