regex从地址字符串中提取英国邮编的一部分
regex to extract part of a UK postcode from an address string
我真的不太了解正则表达式来解决这个问题,所以…
我正在玩地理定位API,我的目标是得到一个关于访问者的下落的大致想法,这样我就可以列出在该特定区域提供的服务。
这是通过邮政编码字符串的前导部分完成的。例如n17 9ht
,我的兴趣是n17
这很公平,但我在chrome和IE9中得到不同的输出,firefox要好得多,它会自动返回一个postalCode字符串。
- chrome:
2 Castlebar Park, London, Greater London W5 1BX, UK
- ie9:
3-6 Mt Ave, London Borough of Ealing, London W5, UK
而这两个都不是我的地址,W5是正确的。
问题是,我如何从两个可能的字符串中提取W5 ?
显然,字符串被,
分割,所以我正在寻找从字符串中获得W5(或任何可能的英国邮政编码前导部分),看起来像:
-
Greater London W5 1BX
-
London W5
总是在邮政编码的两个部分之间有一个空格(如果提供了2-nd)。
我不关心BFPO/GIR的情况,所以它基本上只是第一部分,可以像n1
或ec3a
一样简单-所以我认为,逻辑需要是:
- 提取全部或部分邮政编码
- 接受第一部分(或唯一的一部分)并传递给其他人。
感谢您的帮助。
这是根据维基百科文章(包括部分)支持所有英国邮政编码语法的最长正则表达式之一:
([A-Z]?'d(:? 'd[A-Z]{2})?|[A-Z]'d{2}(:? 'd[A-Z]{2})?|[A-Z]{2}'d(:? 'd[A-Z]{2})?|[A-Z]{2}'d{2}(:? 'd[A-Z]{2})?|[A-Z]'d[A-Z](:? 'd[A-Z]{2})?|[A-Z]{2}'d[A-Z](:? 'd[A-Z]{2})?),'s*UK$
我没有正确地测试它,但至少适用于您的情况
我不熟悉英国的邮政编码,但你似乎是在说,已经删除了地址的其他部分,你已经把地址缩小到:
[Some words] [several-character code] [optional three-character code]
需要两个字符的代码。如果这是正确的,那么也许一个正则表达式像这样:
/'s([^'s]{2,4})(?:'s...)?$/
那么您想要的位将由.match()
:
var addressPart = "Greater London W5 1BX",
alert(addressPart.match(/'s([^'s]{2,4})(?:'s...)?$/)[1]); // "W5"
(当然,您可以测试.match()
的返回值以确保它工作,但是如果工作,则您想要的位将是匹配数组的第二个元素。)
狡猾的演示:http://jsfiddle.net/HjD7w/1/
编辑:我怀疑这不会完全工作,因为在某些情况下,城市名称的最后一个单词可能会被误认为邮政编码的第一部分,但如果有关于如何在邮政编码中匹配alpha和数字字符的固定规则,您可以修复它。(虽然我不知道规则)
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何检查字符串的一部分与数组匹配
- 为什么可以't我使用了AJAX响应的一部分
- 仅重新加载网页的一部分
- 如何使用ViewCompiler手动编译DOM的一部分
- Html/Javascript-如何屏蔽除英国以外的所有欧盟国家,并允许所有非欧盟国家
- Regex提取URL返回数组的一部分;未定义”;
- Html地图对象-点击地图获取id的一部分
- 如何使用JavaScript提取此url的一部分
- 将字符串的一部分设置为数组的一部分
- 用数字单位替换字符串的一部分
- 如何对单个页面进行密码保护(这不是身份验证系统的一部分)
- 附加和删除输入值的一部分
- 仅对标题标记的一部分使用document.write
- 如何使表格的一部分变灰
- 通过JavaScript设置的表单字段的值不会作为$_POST的一部分传递给PHP脚本
- 将d3中饼图的一部分隔开
- 如何放置单独的ajax调用,使页面的一部分完全响应,而另一部分仍在加载
- 返回英国邮政编码只是谷歌地图地理编码结果的一部分
- regex从地址字符串中提取英国邮编的一部分